Redux(react-redux)における適切な配列要素の更新
2021年8月23日…
英語の記事は見当たったが、日本語の記事がなかったので、書いておく。
CloudFlareのSSL/TLS 暗号化モードはサブドメインはドット1回分までしか、仕様上対応していない。そのため、もし対象のDNSレコードにドットを2回以上設定値に使用していた場合、そのレコードの設定値をドット1回までのレコードに変更する。
HTTPS通信の実現のため、少し楽をしたいと思い、CDN大手CloudFlareを使用し、クライアントとエッジサーバ間のHTTPSが通信設定(SSL/TLS 暗号化モード)をやっていた。設定したレコードは2つで、例えると以下のような感じである。
service.hogefuga.com
api.service.hogefuga.com
service.hogefuga.comは、意図するようにHTTPSでの接続が確立されたのだが、api.service.hogefuga.comのみ時間経過を待ってもHTTPSによる接続が確立されず、Chromeでは、『ERR SSL VERSION OR CIPHER MISMATCH』のエラーが出てしまっていた。
一方で、対象ホストにはping
コマンドでパケットの到達を確認し、host
コマンドで名前解決を確認、さらに対象ホストのWebサーバのログでもHTTPリクエストの到達を確認した。
そのため、CloudFlare側の設定内容を疑ってみたが、調べているとCloudFlare公式からこんな記事を見つけた。
Community Tip – Fixing ERR SSL VERSION OR CIPHER MISMATCH in Google Chrome – Tutorials – Cloudflare Community
https://community.cloudflare.com/t/community-tip-fixing-err-ssl-version-or-cipher-mismatch-in-google-chrome/42162
上記の記事に答えがあって、以下がその答えの部分である。
Understand how the certificate works
Certificates will only cover a single level of subdomains (.example.com, but not *…example.com):Will work – www.example.com
Will work – example.com
Will work – test.example.com
Will NOT work – www.test.example.com
Will NOT work – staging.www.example.com
要は、Aレコードのサブドメインはドット1回分のレコードまでしか、このオプションは対応していませんよ、という内容だった。CloudFlareのコントロールパネルを確認したが、2021年7月31日時点ではこのような制限は明記されておらず、通常は実際に設定をしてみて、この事象に遭遇をしてから初めて気づくものだろうと思われる(これは、極めて不親切…)。当初は、どのようなドメイン形式もいけるのだろうと思っていたが、そもそも万能ではないということだ。
ドット2回のレコードをサブサブドメインと称する表現が正しいかは分からないが、これに対応していないとなると、レコードの設定値としてはやや自由度が低いため、Let’s Encryptで証明書を取得しようかと思っている。
しかし、単純にクライアントとエンドポイントを単にHTTPS化したいというだけで、特に多くのこだわりがない人にとっては、SSL/TLS 暗号化モードはかなり便利なオプションではある(証明書の更新作業も不要なので、用途が合えばとても楽ができる)。
2021年8月1日追記:
今時、WebアプリケーションにCDNを使わない構成というのは考えにくい。結局のところCDN利用というアーキテクチャを取った場合、やはりCloudFlareの場合、SSL/TLS 暗号化モードのオプションを取るのは最低限ということで、Aレコードの自由度は低いが、採用することにした。
プログラムを書きながらTranceを聴くのが良いですね。みなさんも聴いたほうがいいですよ、Trance。EDMよりハードトランスでしょ。
Discussion about this post