GitHub Pagesに設定しているカスタムドメインをHTTPS対応させる
Published at 2015-01-12
このブログはGitHub Pagesで運用している。ホスト名を書いたCNAME
ファイルをドキュメントルートに配置してドメインを1000ch.netとしているが、これだと証明書がないせいでGitHub Pagesが対応しているHTTPSを利用できない。つまり、
となり、
とならない。
なぜHTTPSにしたいか
話はGoogle I/O 2014に参加した時に見たHTTPS Everywhereというセッションに遡る。
ネットワークレイヤ疎い自分は、SSLのオーバーヘッドの方が大きいのではと薄っすら妄想してしまったけど、事はそう簡単ではないらしい。
HTTP vs HTTPS TestはHTTPとHTTPS通信化において、Webサイトのパフォーマンスがどうなるかを検証するサイトだが、見ての通りHTTPSの方が高速という驚くべき結果になっている。
このカラクリは、@kazuhoさんのなぜHTTPSはHTTPより速いのか - Kazuho’s Weblogという記事にある考察を見てもらうとわかる。
話題のService Workerもセキュアな環境じゃないと無効だし、パフォーマンスの観点からも2015年はHTTP→HTTPSという潮流が生まれる予感。これについてはHTTPからHTTPSへ - Hail2u.netという記事も見て欲しい。
CloudFlareをDNSサーバーとして利用する
GitHub PagesにCNAMEで設定しているカスタムドメインでHTTPSを使えないか探していると、それらしき情報がGitHub Pages Now Supports HTTPS, So Use Itという記事にあった。CloudFlareがユニーバサルSSLを提供しているのでそれを使うことで実現可能ということらしい。有料プランでなくとも良いとのこと。
指定ドメインのDNSサーバーをCloudFlareに向ける
ドメインプロバイダだと、プロバイダ側でDNSサーバーを用意してくれていたりするが、CloudFlareの用意するDNSサーバーに向くようにする。DNSサーバーはxxx.ns.cloudflare.com
みたいなやつが2つ。
変更後にMy Websitesで、ドメインプロバイダ側でDNSサーバーのアドレスを更新したドメインの、 Re-Test を実行すると、裏で再テストが実行される。ドメインがCloudFlareに向いて疎通が確認出来た。めでたい。
常にHTTPSになるように
ドメインの右の方にあるギアのアイコンをクリックすると、ドロップダウンメニューの中に Page rules という項目があるのでクリックする。
ここでは指定のURLパターンに対して挙動を設定可能。ドメイン全てのURLに対してHTTPSが有効になるようにしたいので、1000ch.net/*
というパターンに対し Always use https をonにする。
上手く動いた👌
結論
GitHub Pagesにカスタムドメインをあてて、それをHTTPS化は可能であることがわかった。もうちょっと手が込んだことが必要なのかと思っていたところ、いとも簡単に出来てしまったので、詰まったログ等も残せずに終わってしまった…。