トップ «前の日記(2015/12/28 (月) ) 最新 次の日記(2015/12/30 (水) )» 編集 RSS feed

HsbtDiary


2015/12/29 (火) [長年日記]

www.hsbt.org 向けに Let's Encrypt で証明書を作って https にした

RubyKaigi 2015 のアレコレで遊ぶことができなかった Let's Encrypt を使って www.hsbt.org 用の証明書を作ってみた。

まずは README.rst (rst!!1) に書いてある通りに ./letsencrypt-auto を実行したところ、python の必要なコンポーネントと virtualenv の設定が始まるのでぼーっと眺めては、これらが実際に何をやっているのかというのを試行錯誤を繰り返しながら学ぶってやつ。README に書いてあることも中々省略していて、ググッて出てくる情報もちょっと古い内容があって混乱したのだけど、

  • letsencrypt-auto で証明書要求のプロセスが走って
  • 証明書を要求したドメインの .well-known ディレクトリ配下に verification token を配置して、それを外から読めるようにして
  • verification が成功したら /etc/letsencrypt/archive 配下に証明書が配置される

というものらしい、--apache などで実行すると何が起きたのかさっぱりわからなかったけど、-a manual で実行すると具体的な詳細手順が出てくるのでやってることをやっと理解することが出来た。まとめとしては

$ ./letsencrypt-auto certonly -a manual -d www.hsbt.org --email hsbt@ruby-lang.org

って感じで実行するとそれっぽい手順がわかる。途中に ToS への同意や .well-known の内容が表示されるので、そこはよしなにやる。成功すると、/etc/letsencrypt/archive に証明書、中間証明書とそれらを結合したもの、秘密鍵などが配置されて /etc/letsencrypt/live に最新の物が配置されるので nginx/apache などから live 配下の証明書を参照するように設定して終わり。

letsencrypt は有効期限が3ヶ月という微妙な期限なので、コマンドラインだけで全てを終えられるように以下のような ini ファイルを作成して

$ cat /etc/letsencrypt/letsencrypt.ini
rsa-key-size = 4096
server = https://acme-v01.api.letsencrypt.org/directory
email = hsbt@ruby-lang.org
domains = www.hsbt.org
authenticator = webroot
webroot-path = /var/www/hsbt.org
renew-by-default = true
agree-tos = true
text = true

letsencrypt-auto certonly -c /etc/letsencrypt/letsencrypt.ini で実行すると .well-known へのトークン配置や諸々を自動で行って live 配下も更新してくれるので、実行後に nginx reload するように crontab で仕込んで終わり。便利だなあ。

www.hsbt.org を http2 対応した

www.hsbt.org は nginx-1.9.9 を使っているので、nginx の configuration で listen 443 ssl http2 と指定してさくっと http2 対応しておいた。

tDiary があちこちで http 埋め込みなイメージというのを結構使っているのでせっせと手直しして普通に見る分にはちゃんと http2 になったぽい。こうしてみると結構古いものや明らかに遅いでしょ、みたいな plugin がでてきたので見なおしたり、tDiary 側を直すなどしていかねば〜。