EagleLand

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化は可能であることがわかった。もうちょっと手が込んだことが必要なのかと思っていたところ、いとも簡単に出来てしまったので、詰まったログ等も残せずに終わってしまった…。

タイトルと URL をコピーしました