ec2 + apache + let’s encrypt で無料 SSL

aws

ec2 の Amazon Linux 1 に apache + Let’s enrypt で無料 SSL(https)ライフを送る方法

1. certbotインストール

$ sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
$ sudo chmod 700 /usr/bin/certbot-auto

2. 証明書の発行

$ sudo certbot-auto certonly --webroot -w /home/ec2-user/rails_project/public -d test.example.com --email hoge@example.com --debug

certonly 証明書の作成
–webroot ウェブサーバーモードを指定
-w /var/www/html ドキュメントルートのパス(自環境に合わせてください)
-d test.example.com 認証対象のドメイン名(ここでは例として左記)
–email hoge@example.com 連絡用のメールアドレス(適当でいい?)
–debug Amazon Linuxはまだ実験的だそうでこのオプションつけないと実行できませんのでご注意。

3. 生成された証明書の確認

しばらくすると以下のディレクトリに証明書が生成されます。

/etc/letsencrypt/live/test.example.com/
cert.pem
privkey.pem
chain.pem

4. mod_sslインストール
Apacheにmod_sslを未インストールならインストールします。

$ sudo yum install -y mod24_ssl

5. ssl.confに証明書パス設定

/etc/httpd/conf.d/ssl.confに先ほど取得した証明書のパスを設定します。

...
SSLCertificateFile      /etc/letsencrypt/live/test.example.com/cert.pem
SSLCertificateKeyFile   /etc/letsencrypt/live/test.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/test.example.com/chain.pem
...

6. Apache再起動

$ sudo service httpd restart

証明書の有効期限更新は 90日なので
90日ごとに更新作業が必要

$ sudo certbot-auto renew

を実行した場合は、
有効期限が近い証明書のみを更新し、十分に有効期間が残っている証明書は更新されないため、
Let’s Encrypt 認証局のレート制限 (英文) に引っかかってしまうリスクは最小限に抑えられます。
そのため、好きな頻度で certbot renew コマンドを実行することができます
(毎日 cron で実行しても構いません)。

手動でreload

$ sudo service httpd reload

# 毎月1日の0時に強制的に更新をします。

0 0 1 * * root /usr/bin/certbot-auto renew && service httpd reload

# 毎日 0時 に強制的に更新をします。

0 0 * * * root /usr/bin/certbot-auto renew && service httpd reload
$ crontab -e

で編集する

コメント

タイトルとURLをコピーしました