AWS無料枠を利用してWordPressの運用を始めました。 せっかくなのでSSL対応したいと思ったのですが、すこし調べてみるとELBを使ってSSLするのが一般的みたい。 しかしELBを利用するとお金がかかるので、 なんとか無料でSSL利用できないかともう少し調べてみるとLet's EncryptをEC2インスタンスにインストールすれば良さそうなので その時の作業メモ。
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の再起動をすればhttpsでWordPressに接続できた。
$ 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
というメッセージが来るだけみたい。