Let's Encryptインストールと設定
今までは自前のSSL/TLS証明書を利用してHTTPS通信を行っていましたが、4月に正式サービス開始となったLet's Encryptに切り替えました。
※参考 : Webサーバー間通信内容暗号化(Apache+mod_SSL+Certbot)
# cd /usr/local/
# git clone https://github.com/certbot/certbot
# /usr/local/certbot/certbot-auto -n
# /usr/local/certbot/certbot-auto certonly --webroot -w /var/www/html/ -m mailaddress@dukehide.dip.jp -d dukehide.dip.jp --agree-tos
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/dukehide.dip.jp/fullchain.pem. Your cert will
expire on 2016-10-03. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
# git clone https://github.com/certbot/certbot
# /usr/local/certbot/certbot-auto -n
# /usr/local/certbot/certbot-auto certonly --webroot -w /var/www/html/ -m mailaddress@dukehide.dip.jp -d dukehide.dip.jp --agree-tos
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/dukehide.dip.jp/fullchain.pem. Your cert will
expire on 2016-10-03. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
指定した /var/www/html/ ディレクトリに確認用の「.well-known」ディレクトリが作成され、かつ /etc/letsencrypt/ ディレクトリに鍵が作成されていたらOKです。
続いてssl.confで自前の鍵を指定している文字列部分をLet's Encryptの鍵に書き換えます。
/etc/httpd/conf.d/ssl.conf
#公開鍵指定
SSLCertificateFile /etc/letsencrypt/live/dukehide.dip.jp/cert.pem
#秘密鍵指定
SSLCertificateKeyFile /etc/letsencrypt/live/dukehide.dip.jp/privkey.pem
#中間証明書指定
SSLCertificateChainFile /etc/letsencrypt/live/dukehide.dip.jp/chain.pem
#TLSv1.2以外無効化
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
#使用する暗号化方法
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
#暗号化方法をサーバー側で決定
SSLHonorCipherOrder on
#HSTS=常時HTTPSアクセスの有効化
Header always set Strict-Transport-Security "max-age=15768000"
#公開鍵指定
SSLCertificateFile /etc/letsencrypt/live/dukehide.dip.jp/cert.pem
#秘密鍵指定
SSLCertificateKeyFile /etc/letsencrypt/live/dukehide.dip.jp/privkey.pem
#中間証明書指定
SSLCertificateChainFile /etc/letsencrypt/live/dukehide.dip.jp/chain.pem
#TLSv1.2以外無効化
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
#使用する暗号化方法
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
#暗号化方法をサーバー側で決定
SSLHonorCipherOrder on
#HSTS=常時HTTPSアクセスの有効化
Header always set Strict-Transport-Security "max-age=15768000"
試しにTLSv1とTLSv1.1も無効にしてみました。暗号化方法も少し拡張してみましたが、サーバーにとってはどれだけの負荷になるかは不明です。
Apacheを再起動し、ブラウザから“https://”で接続してみて警告が出ないことを確認。無料でHTTPS通信を可能にしてくれるのですから本当にありがたいものです。
なお、Let's Encryptのサーバー証明書の有効期間は3ヶ月なので、cronにてサーバー証明書を更新できるようにするスクリプトも追加しておきました。