Let’s Encrypt
自分で持っているドメインのサイトのHTTLS化を始めることにした。今までは限定でSmartSSLで証明書を取得していたが、無料でサーバ証明書が取れ、更新が自動で更新できるLet’s Encryptをようやく調べることにした。
サーバ証明書の取得、更新が行えるクライアントソフトウェア certbot が公開されており、OSやブラウザを選んで書いてある設定の通りやった。
certbotのフロー
今まではPC(Mac)でサーバ証明書を取得してそれをchefをつかってサーバに配信するというフローでやっていたが、certbotの場合は運用環境で行う必要がある。というのもサーバー証明書の取得のコマンドは
certbot certonly --webroot -w /var/www/example -d example.com
という記述にになっており、ドキュメントルートを指定する必要がある。
何故かというとcertbotがドキュメントルート以下に.well-known/acme-challenge/xxxxx
のようなファイルを一時的に作成し、それを外部からアクセスできるかどうかでドメインの所有者かどうかを判断している。ちなみに.
で始まるファイルのアクセスを拒否していると証明書の取得に失敗するので注意が必要。
この方法だと複数台サーバがあると面倒になると思う。.well-known
以下へのアクセスはcertbotを実行しているサーバそのサーバに振るみたいなルーティングをしないといけない。そもそも外部からアクセスできる運用サーバで実行しないといけない事自体が面倒。
いろいろ考えたがそんな複数サーバで構成するような規模感のサイトはおとなしく有料のサーバ証明書を買い、更新しろということなのではないかと思った。Let’s Encryptは個人ブログなどサーバ証明書を買うほどではないサイトがHTTPS化対応していくためのサポートなのだと理解する。
HTTLS化の道
サーバ証明書は取得してWebサーバには設定済み。ただHTTLS化の道はまだ長い。
サイトをHTTLS化にするにはサイトが参照する外部のjavascript, image, css, webfontなどの外部リソースもHTTPS化しないといけなく、自分の力だけではどうしようも行かないこともある。
それらの対応が終わったらHTTPのアクセスをHTTPSにリダイレクトする設定にもしないといけない。サーバ証明書の取得が簡単になったとは言えまだそこまで気軽にできることではないが、いろんなサイトがHTTPS化していけばこれらの問題も解決していくだろう。