我正在尝试使用自定义域和 HTTPS 在 Azure 存储上托管静态网站。
我已经创建了一个存储帐户,上传了我的文件,并启用了静态站点托管。该站点在<foo>.web.core.windows.net
Azure 提供的域中运行良好。
我为该站点创建了一个 CDN 端点,并将原始主机名设置为 Azure 提供的主端点,为我的www
子域添加了一个自定义域,为其配置了一个 CDN 管理的证书,并添加了一条规则以将非 HTTPS 请求重定向到https://www.<my-domain>.com
。 这也很好用。
现在我想让我的顶级域名重定向到我的www
子域名。
CNAME 不是一个选项,但我添加了一个别名A
记录来@
指向我的 CDN 端点,并将顶点域作为自定义域添加到 CDN。
请求http://<my-domain>.com
很好地重定向,但请求可以https://<my-domain>.com
理解地给出一个可怕的SSL_ERROR_BAD_CERT_DOMAIN
错误。Azure 不支持针对顶级域的 CDN 管理证书:
CDN 托管证书不适用于根域或顶级域。如果 Azure CDN 自定义域是根域或顶级域,则必须使用自带证书功能。
我实际上并不想在我的顶级域上托管任何东西 — 我只想将其重定向到我的www
子域。手动配置(和维护)证书似乎需要很多开销。
域名注册商 GoDaddy 具有“转发”功能,可以满足我的需要,但我更喜欢将我的 DNS 托管在 Azure 中。
有没有办法将顶点域 HTTPS 请求重定向到我的www
子域,而无需手动为我的顶点域配置证书或将我的 DNS 移出 Azure?
答案1
您可以使用 Let's Encrypt 自动化 apex 的证书,从而使证书部分更易于处理。
除此之外,您基本上需要在某个同时支持 HTTP 和 HTTPS 的地方托管 301 重定向才能使其正常工作,恐怕没有捷径可走,特别是如果您要使用 HSTS。有些 DNS 提供商实际上在顶端支持 CNAME,但我有点犹豫是否要尝试它们。
答案2
不,除非您拥有适当的 SSL 证书,否则您无法接收 HTTPS 请求。
随后发生重定向。
答案3
编辑:抱歉,我没有仔细阅读问题。我也想避免管理证书的开销,但我没有找到解决办法。您实际上可以在 Azure 中购买 SSL 证书,它实际上是由 GoDaddy 提供的。我想知道它是否可以自动续订。
我最终从 ssls.com 购买了超便宜的 4 年期证书,将其保存在 Azure Vault 中,并让我的 Azure CDN 将其用于我的顶级域(使用以下步骤在 Azure DNS 中设置)。我的 CDN 将对顶级域的请求重定向到 www 子域。
您现在可以使用别名来执行此操作。
- 前往 DNS 区域
- 添加记录集
- 保留名称为空
- 选择A型
- 对于别名记录类型,选择“是”
- 从资源下拉列表中选择 CDN 端点
然后,在 CDN 端点中添加您的主机名 (example.com)。
您将需要在 CDN 中为根级域使用自定义 SSL。