keshipi's blog

いつでも自分を振り返れるために書きます

EC2上のWordPressを無料でSSL対応させる方法がわからない

AWS無料枠を利用してWordPressの運用を始めました。 せっかくなのでSSL対応したいと思ったのですが、すこし調べてみるとELBを使ってSSLするのが一般的みたい。 しかしELBを利用するとお金がかかるので、 なんとか無料でSSL利用できないかともう少し調べてみるとLet's EncryptをEC2インスタンスにインストールすれば良さそうなので その時の作業メモ。

  1. certbotをインストール
  2. 証明書の発行
  3. 証明書を設定
  4. mod24_sslをインストール
  5. 自動更新の設定

1. certbotをインストール

certbotはLet's Encryptを簡単に利用できるようにしてくれるツール。 SSLを導入したいサーバで、

# certbotを/usr/bin下にダウンロードし、権限を変更
$ sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
$ sudo chmod 700 /usr/bin/certbot-auto

2. 証明書の発行

$ sudo /usr/bin/certbot-auto certonly --webroot -w /var/www/html --email haogehoge@example.com --debug -d example.com

上記のコマンドを実行すると、 利用規約やメルマガ利用の可否が聞かれ、進めていくと以下のディレクトリに証明書各種が生成される。

$ sudo ls /etc/letsencrypt/live/example.com/
README  cert.pem chain.pem fullchain.pem privkey.pem

3. 証明書を設定

設定項目とファイルのマッピングLet's Encryptのコミュニティを参照

$ sudo vim /etc/httpd/conf.d/ssl.conf

# それぞれの項目に生成されたファイルのパスを設定
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

4. mod24_sslをインストール

今回利用しているEC2にはApacheのバージョン2.4をインストールしたので、 mod24_sslを使う必要があるらしい。

$ sudo yum install mod24_ssl

最後にApacheの再起動をすればhttpsWordPressに接続できた。 $ sudo service httpd restart

5. 自動更新の設定

Let's Encryptは3ヶ月で有効期限が切れるようなので、 自動更新するようにcronに設定する。

$ sudo vim /etc/cron.d/letsencrypt

# 毎日AM3に更新処理を行う
# --post-hookオプションはコールバック
0 03 * * * root /usr/bin/certbot-auto renew --post-hook "service httpd restart"

更新期限が来る前に更新処理をしてもCert not yet due for renewalというメッセージが来るだけみたい。

参考🙏 Let's Encryptを使ってSSL証明書を自動更新する(AWS/Amazon Linux/Apache)