乗るしかない、このビッグウェーブに
、という感じで Let's Encrypt を使って無料の証明書をゲットし、ブログを https で公開するようにした。
証明書の設定とか難しそうで敬遠してたのだけど、実際やってみると思ったより簡単だったが、いくつかはまりポイントあったので書いておきます。
自サイト内の 'http://' を 'https://' に書き換える
CSS やテンプレート内で http://hogehoge.com
となっているところを //hogehoge.com
に変える。本文中の画像の URL も 'https://' に書き換える。ちまちました作業。 Amazon の画像の URL も https に対応したドメインに変えないといけない。
S3 に独自ドメイン当てて使っている場合、ここも証明書がいる
画像は S3 から配信していて、独自ドメイン( resources.portalshit.net
)を当てて使ってたんだけど、ブログ本体を SSL にしたのに画像配信サーバーとの通信が非 SSL なので mixed content といって怒られる。
S3 単体で独自ドメインを使って SSL 通信することはできないので、 CloudFront を経由して CloudFront に Let's Encrypt で作った証明書を登録して使う。この S3/CloudFront 用の証明書の発行・登録のプロセスが若干面倒くさい。更新のときに手順忘れてそうで心配。 Let's Encrypt プラグインを使うようにした方がよさそう。
他、 Route53 で CNAME 当てて S3 に向けていたのを CloudFront を向くように変える必要もあり。
個人ブログごときで CloudFront を使うことになるとは思わなかった。
Lokka の管理画面が SSL 通信に対応してない
やっと mixed content の警告消えて記事を書こうとしたら、なんと管理画面が SSL 非対応でブログにログインできない。 Padrino の url
メソッドが protocol の指定を出来ないようだった。オーバーライドとか試してみたけどうまくいかなくて困ってたところ、 rack-ssl-enforcer
という gem を発見した。こいつを RACK_ENV=production
のときだけ use するようにして乗り切った。 'http://' となってるのを Rack 層でえいやっと 'https://' に書き換えてくれる。
感想
Let's Encrypt 、本当に簡単で最高便利だと思った。オレオレ証明書発行するより楽っぽい。いい世の中になったと思う。ただ有効期限が短いので更新を忘れないようにしないといけない。更新の自動化までやってしまいたい。
ウェブサーバーを Nginx から H2O に変えるのとかまでは手が回ってないので自動更新と一緒にやりたい。