RubyKaigi 2015 のアレコレで遊ぶことができなかった Let's Encrypt を使って www.hsbt.org 用の証明書を作ってみた。
まずは README.rst (rst!!1) に書いてある通りに ./letsencrypt-auto
を実行したところ、python の必要なコンポーネントと virtualenv の設定が始まるのでぼーっと眺めては、これらが実際に何をやっているのかというのを試行錯誤を繰り返しながら学ぶってやつ。README に書いてあることも中々省略していて、ググッて出てくる情報もちょっと古い内容があって混乱したのだけど、
.well-known
ディレクトリ配下に verification token を配置して、それを外から読めるようにして/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 は nginx-1.9.9 を使っているので、nginx の configuration で listen 443 ssl http2
と指定してさくっと http2 対応しておいた。
tDiary があちこちで http 埋め込みなイメージというのを結構使っているのでせっせと手直しして普通に見る分にはちゃんと http2 になったぽい。こうしてみると結構古いものや明らかに遅いでしょ、みたいな plugin がでてきたので見なおしたり、tDiary 側を直すなどしていかねば〜。