Journal InTime


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チェックを除外するように明示的に設定しておいた。

Tags: Ruby