Firebase Hosting + Cloudflare Register の連携は SSL/TLS 暗号化モードの設定もお忘れなく

2024/02/12に公開

Firebase Hosting でホストしているサイトを Cloudflare Register で管理しているドメインに連携した時の躓いたところを覚え書き。

https://firebase.google.com/docs/hosting?hl=ja
https://www.cloudflare.com/ja-jp/products/registrar/

はじめに

今回の躓きの経緯を箇条書きでまとめると、

  • ドメインは、お名前.com から Cloudflare Registrar へ移管、移管作業は無事に完了
  • ドメインの連携作業は以下の記事を参考に進めていた
  • Firebase Hosting 側のDNSレコードチェックが上手く通っておらず、ドメインにアクセスしても ERR_TOO_MANY_REDIRECTS が返却されていた

と、こういう状況でした。

DNS の名前解決に時間が掛かっていると判断して、3日くらい待ってもだめだったので、他に原因があると思い探ると、SSL/TLS 暗号化モードの設定が必要でした。

SSL/TLS の暗号化モードの設定

Cloudflare の管理画面から「SSL/TLS」タブにある「概要」から、暗号化モードを「フル」に変更(デフォルトは「フレキシブル」)。

管理画面 左メニュー 暗号化モードの設定

この設定の後、2, 3分ほどで無事にドメインに正常にアクセスすることができました。

暗号化モード

この「暗号化モード」の説明が Cloudflare 公式資料にあったので抜粋すると、フレキシブルの場合は「Cloudflareとオリジン間のすべての接続はHTTPを通じて行われます」とあるように、サーバー同士の通信はスキュアではない方法でやり取りが行われます。それが原因で DNS レコードのチェックに失敗していたものと思われます。

フレキシブル:暗号化モードをフレキシブルに設定すると、サイトは部分的に安全になります。Cloudflareは、訪問者とCloudflareの間のHTTPS接続を許可しますが、Cloudflareとオリジン間のすべての接続はHTTPを通じて行われます。その結果、オリジンにSSL証明書は必要ありません。
フル:暗号化モードをフルに設定すると、Cloudflareは訪問者とCloudflareの間のHTTPS接続を許可し、訪問者がリクエストしたスキームを使用してオリジンへの接続を行います。訪問者がhttpを使用する場合、CloudflareはプレーンテキストHTTPを使用してオリジンに接続し、その逆も同様です。

Flexible: Setting your encryption mode to Flexible makes your site partially secure.Cloudflare allows HTTPS connections between your visitor and Cloudflare, but all connections between Cloudflare and your origin are made through HTTP. As a result, an SSL certificate is not required on your origin.
Full: When you set your encryption mode to Full, Cloudflare allows HTTPS connections between your visitor and Cloudflare and makes connections to the origin using the scheme requested by the visitor.If your visitor uses http, then Cloudflare connects to the origin using plaintext HTTP and vice versa.

https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/#available-encryption-modes

その他

この記事も参考になりそう。

https://blog.cloudflare.com/a-step-by-step-guide-to-transferring-domains-to-cloudflare-ja-jp

Discussion