2016-04-14 (Thu) [長年日記]
_ SSL化
Let's Encryptが正式にサービスを開始したので、このサイトをSSL化してみた。
FreeBSDだとパッケージになっているのでpkgコマンドでインストール。
$ sudo pkg install py27-letsencrypt
--webrootオプションでnginxのdocument rootを指定して証明書を取得。
$ letsencrypt certonly --webroot -w /path/to/docroot -d shugo.net
document root以外にも/usr/local/etc/letsencryptなどの書き込み権限がないと怒られるので、ディレクトリを作成した上で適当にownerやpermissionを設定したら、一般ユーザの権限で問題なく証明書を取得できた。
また、/etc/crontabに以下のような設定を追加し、毎月1日に証明書を更新するように設定。
30 6 1 * * username letsencrypt renew --force-renew
nginxの設定は以下のようにOCSP Stapling等の設定もしておいた。
ssl on; ssl_certificate /usr/local/etc/letsencrypt/live/shugo.net/fullchain.pem; ssl_certificate_key /usr/local/etc/letsencrypt/live/shugo.net/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!EXPORT:!DES:!3DES:!MD5:!DSS; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /usr/local/etc/letsencrypt/live/shugo.net/fullchain.pem;
SSL自体の設定よりも、tDiaryでなぜかHTTPSでアクセスした時だけ応答に5秒くらい問題の方に時間がかかってしまった。 どうも以下の問題に引っかかってしまったらしい。
設定の[セキュリティ]>[DNSBLフィルタ]で[OK]ボタンを押したら設定が書き換わって問題なくなった。 なぜHTTPSの時だけ問題が起きたのか謎だが、HTTPの時はRefererが同一サイトだと判断されてたのがHTTPSでは上手く判別できなかったのかな。念の為shugo.netはRefererチェックを除外するように明示的に設定しておいた。