バックエンドはGitHub Pagesで変わっていないが、証明書をGitHubが用意してくれるものを利用するようにした。ついでにCloudflare経由にするのもやめた。お世話になったが、CDNをあまり必要としなくなったことや、JavaScriptやクッキーが無効だと5秒待たされやすくなったことがやめたかった理由だ。また、構成は単純な方が望ましい。Herokuやレンタル・サーバーならCloudflareを経由する意味はまだあるが、GitHub Pagesだとほぼ意味はないだろう。
GitHub側でやる作業はSettingsからEnforce HTTPSにチェックを入れるだけだ。ここでだいたい間違った証明書が発行される不穏な状況に陥るが、あわてずEnforce HTTPSのチェックを外して入れなおし、しばらく待つとうまくいくようだ。
Cloudflareを使っていたため、事前にいくつか作業が必要そうだった。まず、そのCDN機能を切り、CNAME Flatteningを使っているエイペックス・ドメインはAレコードに変えておくとスムーズに進むだろう。そうしておかないと、GitHubからはドメインがちゃんとGitHubのサーバーに向いていることが確認できない。また、その際にはGitHub Pagesのカスタム・ドメインを一旦削除して追加しなおす必要もあった。
www
からエイペックスへのリダイレクトは、Enforce HTTPSを有効にすると、証明書の関係でGitHub Pages側が行ってくれなくなる(ようだ)。Googleドメインでは合成レコードでサブドメインのリダイレクトを設定できる。SSLを有効にするオプションを有効にしたり、ちゃんとターゲットURLをhttps:
で始めると、完全にhttps:
で始まるエイペックスへ統一できた。
手元の環境ではhttp:
からhttps:
へのリダイレクトやwww
からエイペックスへのリダイレクト、https:
のwww
からエイペックスへのリダイレクトも確認できている。whois
やdig
、もちろんcurl
でも間違っていそうなところは見つからない。CloudflareのDNS設定も残してあるので、こっちのネームサーバーを見に行っているケースでもまだ大丈夫なはずだ。
このウェブサイトでは、同じタイミングでCloudflareもやめようとしたため、ネームサーバーの切り替えも行っ(てしまっ)た。そのためちょっと変なことになっているような気がするし、実際変なことになっていたようだ。Aレコードへの修正が遅れたので、変なことになっていたのだと思う。
Cloudflareを併用することにもそこそこ意味はある。主にCloudflareが用意してくれるミドルウェア的な機能だ。例えばPage Rulesでの簡単なリダイレクトや、静的ファイルの最小化、キャッシュ期限の制御、もしかするとAlways Onlineも入るかもしれない。
そう考えるとまずはCloudflareでFlexible SSLからFull SSLに移行するのが無難だった。その後にネームサーバーの切り替えを行えば、変なことにならずに済んだだろう。
証明書の期限が3か月なので、もうちょっと待って、最初期に設定した勢が、更新に成功したかどうかを確認してから切り替えた方が良かったかもしれない。ちょっとあせってしまった……。色々と失敗した。