カスタムドメインとHTTPSを使用して、Azureストレージで静的Webサイトをホストしようとしています。
ストレージアカウントを作成し、ファイルをアップロードして、静的サイトのホスティングを有効にしました。このサイトは、Azureが提供する<foo>.web.core.windows.net
ドメインからうまく機能しています。
Originのホスト名がAzureによって提供されるプライマリエンドポイントに設定されたサイトのCDNエンドポイントを作成し、www
サブドメイン用のカスタムドメインを追加し、それにCDN管理の証明書をプロビジョニングし、ルールを追加しましたHTTPS以外のリクエストをhttps://www.<my-domain>.com
にリダイレクトします。これもうまくいきます。
次に、apexドメインをwww
サブドメインにリダイレクトします。
CNAMEはオプションではありません ですが、CDNエンドポイントを指す@
のエイリアスA
レコードを追加し、apexドメインをカスタムドメインとしてCDNに追加しました。
http://<my-domain>.com
へのリクエストはうまくリダイレクトしますが、https://<my-domain>.com
へのリクエストは恐ろしいSSL_ERROR_BAD_CERT_DOMAIN
エラーを発生させます。 Azureは、apexドメインのCDN管理の証明書をサポートしていません :
CDN管理の証明書は、ルートドメインまたはApexドメインでは使用できません。 Azure CDNカスタムドメインがルートドメインまたはApexドメインである場合は、独自の証明書を使用する機能を使用する必要があります。
私のapexドメインで実際に何もホストしたくない— www
サブドメインにリダイレクトしたいだけです。証明書を手動でプロビジョニング(および維持)することは、多くのオーバーヘッドのように見えます。
ドメインレジストラーであるGoDaddyには、私がやりたいことを実行する「転送」機能がありますが、私はDNSをAzureでホストしたままにしておきたいと思っています。
Apexドメインの証明書を手動でプロビジョニングしたり、AzureからDNSを移動したりせずに、apexドメインのHTTPSリクエストをwww
サブドメインにリダイレクトする方法はありますか?
Let's Encryptを使用して頂点の証明書を自動化し、証明書の部分をもう少し扱いやすくすることができます。
それ以外は、これを機能させるために、基本的にHTTPとHTTPSの両方を処理する301リダイレクトをホストする必要があります。特にHSTSを使用する場合は、近道はありません。頂点で実際にCNAMEをサポートするDNSプロバイダーがいくつかありますが、それらを試すのには少し躊躇します。
編集:すみません、質問を正しく読みませんでした。また、証明書の管理のオーバーヘッドを回避したかったのですが、解決策が見つかりませんでした。実際にはGoDaddyによってプロビジョニングされたSSL証明書をAzureで購入できます。自動更新できるかしら。
結局、ssls.comから4年間という超安価な証明書を購入し、Azure Vaultに保存して、Azure CDNでapexドメイン(Azure DNSで以下の手順を使用してセットアップされています)に使用できるようにしました。私のCDNは、apexドメインへの要求をwwwサブドメインにリダイレクトします。
エイリアスを使用してこれを行うことができます。
次に、CDNエンドポイントにホスト名(example.com)を追加します。
ルートレベルドメインのCDNでカスタムSSLを使用する必要があります。
いいえ、適切なSSL証明書がないとHTTPSリクエストを受信できません。
その後リダイレクトが行われます。