Let's encryptを使ったAWS EC2(Amazon Linux)へのSSL導入

かんたんまとめ

Let's encryptは、無料で利用できるSSL証明書です。
今回はAmazon Linuxで構築した社内サーバのSSL証明書の期限が切れそうだったので、
ためしにインストールして見ました。

実際に入れて見てわかったことは、下記の4点です。

  • Amazon Linuxではまだ自動スクリプトでのセットアップ検証がすんでないらしく手動で設定を行う必要がある。
  • 証明書の有効期限は3ヶ月間
  • cronで自動でリニューアルする
  • Aレコードがインストールするサーバを向いている必要がある
    • つまりDNSが切り替わってからでないと導入できない
$ sudo wget https://dl.eff.org/certbot-auto
$ sudo chmod a+x certbot-auto
# 依存パッケージでエラーになったので、一度パッケージを削除のうえ、アップデート→https://goo.gl/mHx4Qe
$ sudo yum remove libstdc++-devel
$ sudo yum update
$ sudo ./certbot-auto certonly --webroot -w /var/www/html --email test@example.com --debug -d www.example.com
license: Agree
share email: Yes
# 下記パスにファイルが自動作成される
$ sudo ls /etc/letsencrypt/live/www.example.com

# apacheの設定ファイルを編集
$ sudo vi /etc/httpd/conf.d/ssl.conf
$ sudo /etc/init.d/httpd configtest # テスト
$ sudo  /etc/init.d/httpd restart

3ヶ月ごとの更新なので、cronで自動化する。
$ sudo vi /etc/cron.d/letsencrypt
00 16 * * 2 root /home/ec2-user/certbot-auto renew --post-hook "service httpd restart"

#更新期限1ヶ月を切ったあと、毎週火曜日の16時に更新が走るかを確認して完了です。

Amazon linuxだと少しハマりましたが、結構簡単に導入できて、cron設定もできました。