你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 Web 应用创建并管理 Azure 应用服务证书

本文介绍如何创建应用服务证书并执行续订、同步和删除证书等管理任务。 获得 Azure 应用服务证书后,可以将其导入到 Azure 应用服务应用中。 Azure 应用服务证书是由 Azure 托管的一种专用证书。 它结合了自动化证书管理的简单性以及续订和导出选项的灵活性。

如果从 Azure 购买应用服务证书,Azure 将管理以下任务:

  • 处理 GoDaddy 的购买流程。
  • 对证书执行域验证。
  • 将证书保留在 Azure Key Vault 中。
  • 管理证书续订
  • 在应用服务应用中自动将证书与导入的副本同步。

注意

将证书上传到应用后,证书将存储在与应用服务计划的资源组、区域和操作系统组合(在内部称为“Web 空间”)绑定的部署单元中。 这使得相应证书可供相同资源组和区域组合中的其他应用访问。 上传或导入到应用服务的证书与同一部署单元中的应用服务共享。

先决条件

注意

目前,Azure 国家云不支持应用服务证书。

购买并配置 Azure 应用服务证书

购买证书

  1. “创建应用服务证书”页面开始购买。

    注意

    从 Azure 购买的应用服务证书由 GoDaddy 颁发。 对于某些域,必须通过创建值为 0 issue godaddy.comCAA 域记录显式允许 GoDaddy 作为证书颁发者。

    “创建应用服务证书”窗格的屏幕截图,其中显示了购买选项。

  2. 若要配置证书,请使用下表。 完成后,选择“查看 + 创建”,然后选择“创建”

    设置 说明
    订阅 要与证书关联的 Azure 订阅。
    资源组 将包含证书的资源组。 例如,可以创建新资源组,也可以选择与应用服务应用相同的资源组。
    SKU 确定要创建的证书类型是标准证书还是通配符证书
    裸域主机名 指定根域。 颁发的证书可同时为根域和 www 子域提供安全性。 在颁发的证书中,“公用名”字段指定根域,“使用者可选名称”字段指定 www 域。 若要仅为子域提供安全性,请为子域指定完全限定的域名,例如 mysubdomain.contoso.com
    证书名称 应用服务证书的易记名称。
    启用自动续订 选择是否在到期前自动续订证书。 每次续订都会将证书过期时间延长一年。 费用将从订阅中扣除。
  3. 部署完成后,选择“转到资源”。

将证书存储在 Azure Key Vault 中

Key Vault 是一项 Azure 服务,可帮助保护云应用程序和服务使用的加密密钥和机密。 对于应用服务证书,建议使用 Key Vault。 完成证书购买过程后,还必须先完成几个步骤,然后才能开始使用此证书。

  1. “应用服务证书”页上,选择证书。 在证书菜单上,选择“证书配置”>“步骤 1: 存储”。

    “证书配置”窗格的屏幕截图,其中选中了“步骤 1: 存储”。

  2. 在“密钥保管库状态”页上,选择“从密钥保管库选择”。

  3. 如果创建新保管库,请根据下表设置保管库,并确保使用与应用服务应用相同的订阅和资源组。

    设置 说明
    资源组 建议:与应用服务证书相同的资源组。
    密钥保管库名称 仅使用字母数字字符和短划线的唯一名称。
    区域 与应用服务应用相同的位置。
    定价层 有关信息,请参阅 Azure Key Vault 定价详细信息
    保留已删除保管库的天数 对象在删除后保持可恢复状态的天数。 (请参阅 Azure Key Vault 软删除概述。)设置一个介于 7 和 90 之间的值。
    清除保护 启用此选项将强制所有已删除的对象在整个保留期内保持软删除状态。
  4. 选择“下一步”,然后选择“保管库访问策略”。 目前,Azure 应用服务证书仅支持“密钥保管库”访问策略,而不支持 RBAC 模型。

  5. 选择“查看 + 创建”,然后选择“创建”。

  6. 创建密钥保管库后,请勿选择“转到资源”。 等待“从 Azure Key Vault 选择密钥保管库”页面重新加载

  7. 选择“选择” 。

  8. 选择保管库后,关闭“Key Vault 存储库”页。 “步骤1: 存储”选项应显示绿色复选标记表示成功。 保持页面处于打开状态,执行下一步骤。

确认域所有权

  1. 在与上一部分相同的“证书配置”页中,选择“步骤 2: 验证”

    “证书配置”窗格的屏幕截图,其中选中了“步骤 2: 验证”。

  2. 选择“应用服务验证”。 由于本部分前面已将域映射到了 Web 应用,因此该域已经过验证。 若要完成此步骤,只需选择“验证”,然后选择“刷新”,直到显示“证书为域已验证”消息。

支持以下域验证方法:

方法 说明
应用服务验证 当域已映射到同一订阅中的应用服务应用时,这是最方便的选项,因为应用服务应用已经验证域所有权。 查看确认域所有权中的最后一步。
域验证 确认从 Azure 购买的应用服务域。 Azure 会自动为你添加验证 TXT 记录,并完成该过程。
邮件验证 通过向域管理员发送电子邮件来确认域。 选择此选项时会提供相应说明。
手动验证 使用 DNS TXT 记录或 HTML 页面确认域。 (后者仅适用于标准证书。请参阅以下备注。)选择选项后会提供这些步骤。 HTML 页面选项不适用于启用了“仅 HTTPS”的 Web 应用。 对于通过根域(例如,contoso.com)或子域(例如,www.contoso.comtest.api.contoso.com)的 DNS TXT 记录进行域验证,无论证书 SKU 是什么,都需要在根域级别添加 TXT 记录,并使用 @ 作为名称,使用域验证令牌作为 DNS 记录中的值。

重要

如果是标准证书,则会获得所请求的顶级域及 www 子域的证书(例如,contoso.comwww.contoso.com。 但是,应用服务验证和手动验证都使用 HTML 页面验证,当颁发、重新生成密钥或续订证书时,这种验证方法不支持 www 子域。 如果是标准证书,则使用域验证和邮件验证,以将 www 子域和所请求的顶级域一起包含在证书中。

证书通过域验证后,就可以将其导入到 Azure 应用服务应用中

续订应用服务证书

默认情况下,应用服务证书具有一年的有效期。 在到期日期之前,可以自动或手动续订应用服务证书,以一年为增量。 续订过程会有效地提供一个新的应用服务证书,到期日期从现有证书的到期日期延长一年。

注意

从 2021 年 9 月 23 日开始,如果在过去 395 天内未验证域,则应用服务证书需要在续订、自动续订或重新生成密钥期间进行域验证。 在续订、自动续订或重新生成密钥期间,新证书订单将保持“待颁发”模式,直到完成域验证。

与免费应用服务托管证书不同,购买的应用服务证书的域重新验证不会自动进行。 未能验证域所有权会导致续订失败。 有关如何验证应用服务证书的详细信息,请查看确认域所有权

续订过程要求应用服务的服务主体拥有对密钥保管库的所需访问权限。 通过 Azure 门户导入应用服务证书时,将为你设置这些权限。 请确保不要从密钥保管库中删除这些权限。

  1. 若要随时更改应用服务证书的自动续订设置,请在“应用服务证书”页中选择证书。

  2. 在左侧菜单中,选择“自动续订设置”。

  3. 选择“开启”或“关闭”,然后选择“保存”

    如果开启自动续订,则证书可在到期前 32 天自动续订。

    指定证书自动续订设置的屏幕截图。

  4. 若要改为手动续订证书,请选择“手动续订”。 可以在过期前 60 天请求手动续订证书,但证书的有效期不能超过 397 天

  5. 续订操作完成后,选择“同步”。

    同步操作会自动更新应用服务中证书的主机名绑定,而不会导致应用停机。

    注意

    如果未选择“同步”,应用服务会在 24 小时内自动同步证书。

为应用服务证书重新生成密钥

如果你认为证书的私钥已泄露,则可以为证书重新生成密钥。 此操作将使用证书颁发机构颁发的新证书轮换更新现有证书。

  1. “应用服务证书”页上,选择证书。 从左侧菜单中,选择“重新生成密钥并同步”。

  2. 若要开始该过程,请选择“重新生成密钥”。 此过程需要 1 - 10 分钟才能完成。

    为应用服务证书重新生成密钥的屏幕截图。

  3. 可能还需要重新确认域所有权

  4. 重新生成密钥操作完成后,选择“同步”。

    同步操作会自动更新应用服务中证书的主机名绑定,而不会导致应用停机。

    注意

    如果未选择“同步”,应用服务会在 24 小时内自动同步证书。

导出应用服务证书

由于应用服务证书是 Key Vault 机密,因此可以将副本导出为 PFX 文件,并将其用于其他 Azure 服务或 Azure 之外的服务。

重要

导出的证书是非托管项目。 应用服务证书续订时,应用服务不会同步此类项目。 必须在必要时导出并安装续订的证书。

  1. “应用服务证书”页上,选择证书。

  2. 在左侧菜单中,选择“导出证书”。

  3. 选择“打开 Azure 密钥保管库密钥”。

  4. 选择证书的当前版本。

  5. 选择“下载为证书”。

下载的 PFX 文件是一个原始 PKCS12 文件,其中包含公共证书和专用证书,其导入密码为空字符串。 你可以通过将密码字段留空,在本地安装该文件。 无法将文件按原样上传到应用服务,因为该文件不受密码保护

将 Azure 顾问用于应用服务证书

应用服务证书与 Azure 顾问集成,以便在证书需要域验证时提供可靠性建议。 如果在过去 395 天内未验证域,则必须在续订、自动续订或重新生成密钥期间验证证书的域所有权。 若要确保不会错过任何需要验证的证书或面临任何证书即将过期的风险,可以利用 Azure 顾问查看应用服务证书并为其设置警报。

查看顾问建议

若要查看顾问推荐的应用服务证书,请执行以下操作:

  1. 导航到 Azure 顾问页面

  2. 从左侧菜单中选择“建议”>“可靠性”

  3. 选择筛选器选项“类型等于”,然后从下拉列表中搜索“应用服务证书”。 如果下拉菜单中没有显示该值,则表示尚未针对应用服务证书资源生成任何建议,因为其中任何资源都无需进行域所有权验证。

创建顾问警报

使用不同配置[针对新建议创建 Azure 顾问警报]。 要专门针对应用服务证书设置顾问警报,以便在证书需要域所有权验证时接收通知,请执行以下操作:

  1. 导航到 Azure 顾问页面

  2. 从左侧菜单中,选择“监控”>“警报(预览)”

  3. 单击顶部操作栏上的“+ 新建顾问警报”。 此操作将打开一个名为“创建顾问警报”的新边栏选项卡。

  4. 在“条件”下,选择以下内容:

    配置者 建议类型
    建议类型 颁发应用程序服务证书需要域验证
  5. 填写其余必填字段,然后选择底部的“创建警报”按钮

删除应用服务证书

如果删除应用服务证书,则删除操作是不可逆的,也是最终的。 结果是证书被撤销,应用服务中使用此证书的任何绑定都将失效。

  1. “应用服务证书”页上,选择证书。

  2. 在左侧菜单中,选择“概述”>“删除”。

  3. 确认框打开后,输入证书名称,然后选择“确定”

常见问题解答

我的应用服务证书在“密钥保管库”中没有任何值

应用服务证书可能尚未进行域验证。 直到确认了域所有权后,才能使用 Azure 应用服务证书。 作为一个 Key Vault 密钥,它保留了一个 Initialize 标记,其值和 content-type 都保持为空。 当确认了域所有权之后,密钥保管库密钥显示一个值和 content-type,且标记变为 Ready

无法使用 PowerShell 导出 Azure 应用服务证书

应用服务证书可能尚未进行域验证。 直到确认了域所有权后,才能使用 Azure 应用服务证书。

应用服务证书创建过程会对现有的密钥保管库进行哪些更改?

创建过程会进行以下更改:

  • 在保管库中添加两条访问策略:
    • Microsoft.Azure.WebSites(或 Microsoft Azure App Service
    • Microsoft 证书经销商 CSM 资源提供程序(或 Microsoft.Azure.CertificateRegistration
  • 在保管库中创建名为 AppServiceCertificateLock删除锁,防止意外删除密钥保管库。