将现有自定义域映射到 Azure Spring Apps

注意

Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 虽然该服务有新名称,但一些地方仍会使用旧名称,我们仍在更新屏幕截图、视频和图形等资产。

域名服务 (DNS) 是将网络节点名称存储在整个网络中的一种技术。 本文使用 CNAME 记录来映射域,例如 www.contoso.com。 本教程将使用证书保护自定义域,并介绍如何强制实施传输层安全性 (TLS)(也称为安全套接字层 (SSL))。

证书用于对 Web 流量进行加密。 可将这些 TLS/SSL 证书存储在 Azure Key Vault 中。

先决条件

  • Azure 订阅。 如果你没有订阅,请在开始之前创建一个试用版订阅。
  • (可选)Azure CLI 版本 2.45.0 或更高版本。 使用以下命令安装 Azure Spring Apps 扩展:az extension add --name spring
  • 部署到 Azure Spring Apps 的应用程序(请参阅快速入门:使用 Azure 门户启动 Azure Spring Apps 中的现有应用程序,或使用现有应用)。 如果应用程序是使用基本计划部署的,请确保升级到标准计划。
  • 一个有权访问域提供商(例如 GoDaddy)的 DNS 注册表的域名。
  • 来自第三方提供商的私有证书(即你的自签名证书)。 该证书必须与域匹配。
  • 一个已部署的 Azure 密钥保管库实例。 有关详细信息,请参阅关于 Azure 密钥保管库

Azure Spring Apps 管理的 IP 地址目前不属于 Azure 信任的 Microsoft 服务。 因此,若要允许 Azure Spring Apps 从受专用终结点连接保护的密钥保管库加载证书,必须将以下 IP 地址添加到 Azure Key Vault 防火墙:

  • 20.99.204.111
  • 20.201.9.97
  • 20.74.97.5
  • 52.235.25.35
  • 20.194.10.0
  • 20.59.204.46
  • 104.214.186.86
  • 52.153.221.222
  • 52.160.137.39
  • 20.39.142.56
  • 20.199.190.222
  • 20.79.64.6
  • 20.211.128.96
  • 52.149.104.144
  • 20.197.121.209
  • 40.119.175.77
  • 20.108.108.22
  • 102.133.143.38
  • 52.226.244.150
  • 20.84.171.169
  • 20.93.48.108
  • 20.75.4.46
  • 20.78.29.213
  • 20.106.86.34
  • 20.193.151.132

导入证书

准备 PFX 格式的证书文件(可选)

Azure 密钥保管库支持导入 PEM 和 PFX 格式的专用证书。 如果你从证书提供商获得的 PEM 文件在在密钥保管库中保存证书部分中不能使用,请按照此处所述的步骤为 Azure 密钥保管库生成 PFX。

合并中间证书

如果证书颁发机构在证书链中提供了多个证书,则需按顺序合并证书。

若要执行此任务,请在文本编辑器中打开收到的所有证书。

创建名为 mergedcertificate.crt 的合并证书文件。 在文本编辑器中,将每个证书的内容复制到此文件。 证书的顺序应遵循证书链中的顺序,以你的证书开头,以根证书结尾, 如以下示例所示:

-----BEGIN CERTIFICATE-----
<your entire Base64 encoded SSL certificate>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 1>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 2>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded root certificate>
-----END CERTIFICATE-----

将证书导出为 PFX

使用在生成证书请求时所用的私钥导出合并的 TLS/SSL 证书。

如果使用 OpenSSL 生成证书请求,则已创建私钥文件。 若要将证书导出为 PFX,请运行以下命令。 将占位符 <private-key-file> 和 <merged-certificate-file> 分别替换为私钥和合并证书文件的路径。

openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>

出现提示时,定义导出密码。 将 TLS/SSL 证书上传到 Azure 密钥保管库时,需要使用此密码。

如果使用 IIS 或 Certreq.exe 生成证书请求,请将证书安装到本地计算机,然后将证书导出为 PFX

在 Key Vault 中保存证书

导入证书的过程要求 PEM 或 PFX 编码的文件位于磁盘上,并且你必须具有私钥。

使用以下步骤将证书上传到密钥保管库:

  1. 转到你的密钥保管库实例。

  2. 在导航窗格中,选择“证书”。

  3. 在上部菜单中,选择“生成/导入”。

  4. 在“创建证书”页上,为“证书创建方法”选择“导入”,然后为“证书名称”提供值。

  5. 在“上传证书文件”下,导航到证书所在位置并选择该证书。

  6. 在“密码”下,如果你要上传受密码保护的证书文件,请在此处提供该密码。 否则,请将其留空。 成功导入证书文件后,密钥保管库会删除该密码。

  7. 选择“创建” 。

    “创建证书”窗格的屏幕截图。

授予 Azure Spring Apps 对密钥保管库的访问权限

在导入证书之前,需要授予 Azure Spring Apps 对密钥保管库的访问权限。

使用以下步骤通过 Azure 门户授予访问权限:

  1. 转到你的密钥保管库实例。
  2. 在“导航”窗格中,选择“访问策略”。
  3. 在上部菜单中,选择“创建”。
  4. 填写信息,选择“添加”按钮,然后“创建”访问策略。
机密权限 证书权限 选择主体
获取、列出 获取、列出 Azure Spring Apps 域管理

备注

如果找不到“Azure Spring Apps 域管理”,请搜索“Azure Spring Cloud 域管理”。

Azure 门户“创建访问策略”页的屏幕截图,其中“机密权限”和“证书权限”的“获取”和“列出”选项突出显示。

显示密钥保管库的“创建访问策略”页的 Azure 门户屏幕截图,其中已选中“Azure Spring Cloud 域管理”。

将证书导入 Azure Spring Apps

  1. 转至 Azure Spring Apps 实例。

  2. 在导航窗格中,选择“TLS/SSL 设置”。

  3. 选择“导入密钥保管库证书”。

    显示“TLS/SSL 设置”页的 Azure 门户屏幕截图,其中“导入密钥保管库证书”按钮突出显示。

  4. 在“从 Azure 中选择证书”页上,从下拉选项中选择“订阅”、“密钥保管库”和“证书”,然后选择“选择”。

    显示“从 Azure 选择证书”页面的 Azure 门户的屏幕截图。

  5. 在打开的“设置证书名称”页上,输入证书名称,根据需要选择“启用自动同步”,然后选择“应用”。 有关详细信息,请参阅自动同步证书部分。

    “设置证书名称”对话框的屏幕截图。

  6. 成功导入证书后,该证书会显示在“私钥证书”列表中。

    私钥证书的屏幕截图。

重要

若要使用此证书保护自定义域,请确保将此证书绑定到特定的域。 有关详细信息,请参阅“添加 SSL 绑定”部分。

自动同步证书

Azure Key Vault 中存储的证书有时会在过期之前续订。 同样,组织用于管理证书的安全策略可能需要 DevOps 团队定期将证书替换为新证书。 为证书启用自动同步后,Azure Spring Apps 将开始定期同步密钥保管库以获取新版本,通常每隔 24 小时同步一次。 如果有新版本可用,Azure Spring Apps 会导入它,然后使用证书为各种组件重新加载它,而不会造成任何停机。 以下列表显示受影响的组件和相关方案:

  • 应用
    • 自定义域

当 Azure Spring Apps 导入或重新加载证书时,将生成活动日志。 要查看活动日志,请在 Azure 门户中导航到 Azure Spring Apps 实例,然后在导航窗格中选择“活动日志”。

注意

证书自动同步功能适用于从 Azure Key Vault 导入的专用证书和公共证书。 此功能不适用于客户上传的内容证书。

将证书从密钥保管库导入到 Azure Spring Apps 时,可以启用或禁用证书自动同步功能。 有关详细信息,请参阅“将证书导入 Azure Spring Apps”部分。

还可以为已导入到 Azure Spring Apps 的证书启用或禁用此功能。

使用以下步骤为导入的证书启用或禁用自动同步:

  1. 转到私钥证书列表或公钥证书列表。

  2. 选择“自动同步”列后的省略号 (...) 按钮,然后选择“启用自动同步”或“禁用自动同步”。

    显示证书列表的 Azure 门户屏幕截图,其中省略号按钮菜单处于打开状态且已选中“启用自动同步”选项。

添加自定义域

可以使用 CNAME 记录将自定义 DNS 名称映射到 Azure Spring Apps。

注意

不支持 A 记录。

创建 CNAME 记录

转到你的 DNS 提供商,并添加 CNAME 记录以将域映射到 <service-name>.microservices.azure.cn。 此处的 <service-name> 是你的 Azure Spring Apps 实例名称。 我们支持通配符域和子域。 添加 CNAME 后,DNS 记录页类似于以下示例:

DNS 记录页的屏幕截图。

将自定义域映射到 Azure Spring Apps 应用

如果在 Azure Spring Apps 中没有应用程序,请按照快速入门:将第一个应用程序部署到 Azure Spring Apps 中的说明进行操作。

转到应用程序页。

  1. 选择“自定义域”。

  2. 然后选择“添加自定义域”。

    自定义域页的屏幕截图。

  3. 键入你为其添加了 CNAME 记录的完全限定的域名,例如 www.contoso.com。 确保主机名记录类型设置为 CNAME (<service-name>.microservices.azure.cn)

  4. 选择“验证”以启用“添加”按钮 。

  5. 选择 添加

    “添加自定义域”窗格的屏幕截图。

一个应用可以有多个域,但一个域只能映射到一个应用。 成功将自定义域映射到应用后,该域会显示在自定义域表中。

自定义域表的屏幕截图。

注意

自定义域带有“不安全”标签意味着该域尚未绑定到 SSL 证书。 从浏览器向自定义域发出任何 HTTPS 请求都会收到错误或警告。

添加 SSL 绑定

在自定义域表中,如上图所示选择“添加 SSL 绑定”。

  1. 选择或导入你的证书。

  2. 选择“保存”。

    “SSL 绑定”窗格的屏幕截图。

成功添加 SSL 绑定后,域将处于安全状态:“正常运行”。

SSL 绑定的屏幕截图。

实施 HTTPS

默认情况下,所有人仍可使用 HTTP 访问你的应用,但你可以将所有 HTTP 请求重定向到 HTTPS 端口。

在应用页上的导航窗格中,选择“自定义域”。 然后将“仅限 HTTPS”设置为 Yes

SSL 绑定的屏幕截图,其中突出显示了“仅限 HTTPS”选项。

该操作完成后,导航到指向你的应用的任一 HTTP URL。 请注意,HTTP URL 不起作用。

后续步骤