Cloudflare CDNでは2レベル以上のサブドメイン利用に注意が必要
概要
Cloudflare CDNで、sub2.sub.example.comのようなドメインのサイトでCDNが使えないという事象に出会いました。この問題への対処法について紹介します。
問題について
私は、WebサイトのCDNとして無料で使えるCloudflareを利用しています。
今回、私が持っているドメインでsub2.sub.example.comのようなドメインでサイトを公開した際に、ブラウザからアクセスすると、「ERR_SSL_VERSION_OR_CIPHER_MISMATCH」というエラーメッセージが表示されました。
このエラーメッセージとCloudflareについて一緒に調べてみると、次のページがヒットしました。
Total TLS error messages · Cloudflare SSL/TLS docs
このページの内容を見ると、Cloudflare CDNのSSL証明書は、ルートドメインと1レベルのサブドメインにのみ対応していることが分かります。分かりやすくするならば、example.comというルートドメインがあった際に、1レベルのサブドメインであるdocs.example.comはCDNでSSL証明書を利用できるけれど、2レベルのサブドメインであるdev.docs.example.comは利用できないというです。
一応、回避策は用意されており、有料のTotal TLSや、Advanced Certificate Managerを利用することで対応可能です。しかし、できるならば無料で実現したいところです。
このような仕様のため、Cloudflare CDNを使ってsub2.sub.example.comのようなドメインを利用して、無料でサイトを公開するのは無理なようです。ちなみに、昔に書かれたWeb記事では、サブドメインでCloudflareにサイトを登録することで、この問題を回避できたようですが、現在、そのようなことはできなくなっています。
対応方法
2レベル以降ののサブドメインを利用しないように設定できるのであれば、それで問題解決です。
しかし私の環境では、DNSレコードとしてワイルドカードを指定したいと考えていたため、この方法は使えません。
そこで、私がとった方法は新しいドメインを取得するというものです。新しいドメインを取るので、無料では実現できませんが、CloudflareのTotal TLSやAdvanced Certificate Managerの利用では、月額10ドルの支払いなので、ドメインの方がまだ安くすみます。
私が取ったのはxyzドメインです。Cloudflare Registrarから取得しました。取得費用と更新費用が10以下で安いのが決め手です。
私は上記の方法をとりましたが、他にはそもそもCloudflare CDNを使わないという方法も考えられます。Lets Encryptなどの証明書を利用して、用意したWebサーバーなどに適用する方法です。
さいごに
Cloudflare CDNは無料で利用できるので、便利に使わせてもらっていますが、たまにはまることがあります。
結局、無料で利用できていないという話ではありますが、正攻法でCloudflareにお金を払うよりも安くすんでいるのでよしと考えています。
Cloudflare CDNをサブドメインで利用する際はご注意ください。