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

通过在 Azure 应用服务中添加和管理 TLS/SSL 证书来保护连接

可以添加数字安全证书,以在应用程序代码中使用或在 Azure 应用服务保护自定义 DNS 名称,该证书提供了高度可缩放、自我修补的 Web 托管服务。 目前称为传输层安全性 (TLS) 证书,以前也称为安全套接字层 (SSL) 证书,这些专用或公用证书通过加密浏览器、访问的网站和网站服务器之间发送的数据来帮助保护 Internet 连接。

下表列出了可用于在应用服务中添加证书的选项:

选项 说明
创建免费应用服务托管证书 免费且易于使用的专用证书,用于只需保护应用服务中的自定义域的情形。
购买应用服务证书 由 Azure 管理的私有证书。 它结合了自动化证书管理的简单性以及续订和导出选项的灵活性。
导入来自 Key Vault 的证书 如果使用 Azure Key Vault 管理 PKCS12 证书,则非常有用。 请参阅私有证书要求
上传私有证书 如果你已有第三方提供商提供的私有证书,则可以上传它。 请参阅私有证书要求
上传公用证书 公用证书不用于保护自定义域,但可以将其加载到代码中(如果需要它们来访问远程资源)。

注意

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

先决条件

私有证书要求

免费应用服务托管证书应用服务证书已满足应用服务的要求。 如果选择将私有证书上传或导入到应用服务,则证书必须满足以下要求:

  • 导出为受密码保护的 PFX 文件(使用三重 DES 进行加密)。
  • 包含长度至少为 2048 位的私钥
  • 包含证书链中的所有中间证书和根证书。

若要保护 TLS 绑定中的自定义域,证书还有其他要求:

  • 包含用于服务器身份验证的扩展密钥用法 (OID = 1.3.6.1.5.5.7.3.1)
  • 已由受信任的证书颁发机构签名

注意

椭圆曲线加密 (ECC) 证书适用于应用服务,但本文不予讨论。 有关创建 ECC 证书的具体步骤,请咨询证书颁发机构。

准备 Web 应用

若要为应用服务应用创建自定义 TLS/SSL 绑定或启用客户端证书,应用服务计划必须位于“基本”、“标准”、“高级”或“独立”层级 。 要确保 Web 应用位于受支持的定价层,请执行以下步骤:

转到 Web 应用

  1. Azure 门户的搜索框中,查找并选择“应用服务”。

    Azure 门户中搜索框的屏幕截图,已选择“应用服务”。

  2. 在“应用服务”页上,选择 Web 应用的名称。

    Azure 门户中应用服务页面的屏幕截图,其中显示一个包含所有正在运行的 Web 应用的列表,且突出显示了列表中的第一个应用。

    现在你位于 Web 应用的管理页上。

检查定价层

  1. 在 Web 应用左侧菜单的“设置”部分下,选择“纵向扩展(应用服务计划)”。

    Web 应用菜单“设置”部分的屏幕截图,已选择“纵向扩展(应用服务计划)”。

  2. 确保 Web 应用不在 F1 或 D1 层中,该层不支持自定义 TLS/SSL。

    深蓝色的框突出显示了 Web 应用的当前层。

    Web 应用定价层信息的屏幕截图。

  3. 如果需要增加,请按照下一部分中的步骤进行操作。 否则,请关闭“纵向扩展”页,并跳过纵向扩展应用服务计划部分

纵向扩展应用服务计划

  1. 选择任何非免费层,例如 B1、B2、B3 或“生产”类别中的任何其他层。 有关更多选项,请选择“查看其他选项”。

  2. 完成后,选择“应用”。

    定价层的屏幕截图,已选择“应用”。

    出现以下消息时,表示缩放操作已完成。

    纵向扩展操作确认消息的屏幕截图。

创建免费托管证书

免费应用服务托管证书是用于保护应用服务中的自定义 DNS 名称的统包解决方案。 此 TLS/SSL 服务器证书由应用服务完全管理,并在到期前 45 天以六个月为增量连续自动续订,前提是先决条件设置保持不变,无需你执行任何操作。 所有关联的绑定都使用续订的证书进行更新。 你创建证书并将其绑定到自定义域,然后让应用服务执行其余操作。

重要

在创建免费托管证书之前,请先确保已满足应用的先决条件

免费证书由 DigiCert 颁发。 对于某些域,必须通过创建值为 0 issue digicert.comCAA 域记录显式允许 DigiCert 作为证书颁发者。

Azure 代表你完全管理证书,因此可以随时更改托管证书的任何方面(包括根证书颁发者)。 这些更改不受你控制。 请确保避免硬性依赖和将做法证书“固定”到托管证书或证书层次结构的任何部分。 如果需要证书固定行为,请使用本文中的其他任何可用方法将证书添加到自定义域。

免费证书具有以下限制:

  • 不支持通配符证书。
  • 不支持使用已计划弃用和删除的证书指纹作为客户端证书。
  • 不支持专用 DNS。
  • 不可导出。
  • 在应用服务环境 (ASE) 中不受支持。
  • 仅支持字母数字字符、破折号 (-) 和句点 (.)。
  • 必须具有指向你的 Web 应用的 IP 地址的 A 记录。
  • 在不可公开访问的应用上不受支持。
  • 与流量管理器集成的根域不支持。
  • 必须满足上述所有条件才能成功颁发和续订证书。
  1. Azure 门户的左侧菜单中,选择“应用程序服务”>“<app-name>”。

  2. 在应用的导航菜单上,选择“TLS/SSL 设置”。 在打开的窗格中,选择“私钥证书(.pfx)”>“创建应用服务托管证书”。

    已选中“TLS/SSL 设置”、“私钥证书(.pfx)”和“创建应用服务托管证书”的应用菜单屏幕截图。

  3. 选择免费证书的自定义域,然后选择“创建”。 只能为每个受支持的自定义域创建一个证书。

    操作完成后,证书会显示在“私钥证书”列表中。

    “私钥证书”窗格的屏幕截图,其中列出了新创建的证书。

  4. 若要使用此证书保护自定义域,仍需要创建证书绑定。 按照创建绑定中的步骤操作。

购买和导入应用服务证书

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

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

若要购买应用服务证书,请转到启动证书申请

注意

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

如果已拥有有效的应用服务证书,则可以完成以下任务:

开始购买证书

  1. 转到应用服务证书创建页面,开始购买应用服务证书。

    注意

    本文中显示的所有价格仅用作示例。

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

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

  2. 若要帮助配置证书,请使用下表。 完成操作后,选择“创建”。

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

在 Azure Key Vault 中存储证书

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

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

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

  2. 在“Key Vault 状态”页,要创建新的保管库或选择现有保管库,请选择“Key Vault 存储库”。

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

    设置 描述
    名称 仅使用字母数字字符和短划线的唯一名称。
    资源组 建议:与应用服务证书相同的资源组。
    位置 与应用服务应用相同的位置。
    定价层 有关信息,请参阅 Azure Key Vault 定价详细信息
    访问策略 定义应用程序和对保管库资源允许的访问权限。 可以稍后按照分配 Key Vault 访问策略中的步骤设置这些策略。 目前,应用服务证书仅支持 Key Vault 访问策略,而不支持 RBAC 模型。
    虚拟网络访问 限制为仅特定 Azure 虚拟网络具有保管库访问权限。 可以稍后按照配置 Azure Key Vault 防火墙和虚拟网络中的步骤设置此限制
  4. 选择保管库后,关闭“Key Vault 存储库”页。 “步骤1: 存储”选项应显示绿色复选标记表示成功。 保持页面处于打开状态,执行下一步骤。

确认域所有权

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

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

  2. 选择“应用服务验证”。 但是,由于之前已根据先决条件将该域映射到 Web 应用,因此该域已经过验证。 若要完成此步骤,只需选择“验证”,然后选择“刷新”,直到显示“证书为域已验证”消息。

支持以下域验证方法:

方法 说明
应用服务 当域已映射到同一订阅中的应用服务应用时,这是最方便的选项,因为应用服务应用已经验证域所有权。 查看确认域所有权中的最后一步。
Domain 确认从 Azure 购买的应用服务域。 Azure 会自动为你添加验证 TXT 记录,并完成该过程。
Mail 通过向域管理员发送电子邮件来确认域。 选择此选项时会提供相应说明。
手动 使用 DNS TXT 记录或 HTML 页面确认域,这只适用于遵循以下说明的“标准”证书。 选择选项后会提供这些步骤。 HTML 页面选项不适用于启用了“仅 HTTPS”的 Web 应用。

重要

对于“标准”证书,证书提供程序会提供所请求的顶级域及 www 子域的证书(例如,contoso.comwww.contoso.com)。 但是,从 2021 年 12 月 1 日开始,对应用服务和手动验证方法引入了限制。 若要确认域所有权,两者都使用 HTML 页面验证。 此方法不允许证书提供程序在颁发、重新生成密钥或续订证书时包含 www 子域。

但是,“域”和“邮件”验证方法仍可在证书中包含 www 子域和所请求的顶级域。

将证书导入到应用服务中

  1. Azure 门户的左侧菜单中,选择“应用程序服务”>“<app-name>”。

  2. 在应用的导航菜单中,选择“TLS/SSL 设置”>“私钥证书(.pfx)”>“导入应用服务证书”。

    已选中“TLS/SSL 设置”、“私钥证书(.pfx)”和“导入应用服务证书”的应用菜单屏幕截图。

  3. 选择刚刚购买的证书,然后选择“确定”。

    操作完成后,证书会显示在“私钥证书”列表中。

    “私钥证书”窗格的屏幕截图,其中列出了已购买的证书。

  4. 若要使用此证书保护自定义域,仍需要创建证书绑定。 按照创建绑定中的步骤操作。

导入来自 Key Vault 的证书

如果使用 Azure Key Vault 管理证书,则可以在满足要求的情况下将 PKCS12 证书从 Key Vault 导入应用服务。

授权应用服务读取保管库

默认情况下,应用服务资源提供程序无权访问密钥保管库。 若要将密钥保管库用于证书部署,必须授权资源提供程序对密钥保管库的读取访问权限

注意

目前,Key Vault 证书仅支持 Key Vault 访问策略,而不支持 RBAC 模型。

资源提供程序 服务主体 AppId 密钥保管库机密权限 密钥保管库证书权限
Microsoft Azure 应用服务Microsoft.Azure.WebSites - abfa0a7c-a6b6-4736-8310-5855508787cd,对于所有 Azure 订阅都相同

- 对于 Azure 政府云环境,请使用 6a02c803-dafd-4136-b4c3-5a6f318b4714
获取 获取
Microsoft.Azure.CertificateRegistration 获取
列出
设置
删除
获取
列出

将保管库中的证书导入到应用

  1. Azure 门户的左侧菜单中,选择“应用程序服务”>“<app-name>”。

  2. 在应用的导航菜单中,选择“TLS/SSL 设置”>“私钥证书(.pfx)”>“导入 Key Vault 证书”。

    已选中“TLS/SSL 设置”、“私钥证书(.pfx)”和“导入 Key Vault 证书”的屏幕截图。

  3. 若要帮助选择证书,请使用下表:

    设置 描述
    订阅 与密钥保管库关联的订阅。
    密钥保管库 具有要导入的证书的密钥保管库。
    证书 从此列表中,选择保管库中的 PKCS12 证书。 保管库中的所有 PKCS12 证书都已通过其指纹列出,但在应用服务中并非支持所有证书。

    操作完成后,证书会显示在“私钥证书”列表中。 如果导入失败并出现错误,则证书不满足应用服务的要求

    “私钥证书”窗格的屏幕截图,其中列出了已导入的证书。

    注意

    如果使用新证书更新 Key Vault 中的证书,应用服务会在 24 小时内自动同步证书。

  4. 若要使用此证书保护自定义域,仍需要创建证书绑定。 按照创建绑定中的步骤操作。

上传私有证书

从证书提供程序处获取证书后,请按照本部分中的步骤为应用服务准备好证书。

合并中间证书

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

  1. 在文本编辑器中,打开收到的所有证书。

  2. 若要存储合并证书,请创建一个名为 mergedcertificate.crt 的文件。

  3. 将每个证书的内容复制到此文件中。 请确保遵循证书链指定的证书顺序,从你的证书开始,到根证书结束,例如:

    -----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 生成证书请求,则已创建私钥文件。

注意

OpenSSL v3 在 X.509 规范允许的情况下创建具有 20 个八位字节(40 个字符)的证书序列。 目前上传证书 PFX 文件时仅支持 10 个八位字节(20 个字符)。 OpenSSL v3 还将默认密码从 3DES 更改为 AES256,但这可以在命令行上覆盖。 OpenSSL v1 默认使用 3DES,并且仅在串行中使用 8 个八位字节(16 个字符),因此无需任何特殊修改即可支持生成的 PFX 文件。

  1. 若要将证书导出为 PFX 文件,请运行以下命令,但将占位符 <private-key-file> 和 <merged-certificate-file> 分别替换为私钥和合并证书文件的路径。

    openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>  
    
  2. 出现提示时,请指定导出操作的密码。 稍后将 TLS/SSL 证书上传到应用服务时,必须提供此密码。

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

将证书上传到应用服务

现在可以将证书上传到应用服务了。

  1. Azure 门户的左侧菜单中,选择“应用程序服务”>“<app-name>”。

  2. 在应用的导航菜单中,选择“TLS/SSL 设置”>“私钥证书(.pfx)”>“上传证书”。

    已选中“TLS/SSL 设置”、“私钥证书(.pfx)”和“上传证书”的屏幕截图。

  3. 在“PFX 证书文件”中选择 PFX 文件。 在“证书密码”中,输入导出 PFX 文件时创建的密码。 完成后,选择“上传”。

    操作完成后,证书会显示在“私钥证书”列表中。

    “私钥证书”窗格的屏幕截图,其中列出了已上传的证书。

  4. 若要使用此证书保护自定义域,仍需要创建证书绑定。 按照创建绑定中的步骤操作。

上传公用证书

支持使用 .cer 格式的公用证书。

  1. Azure 门户的左侧菜单中,选择“应用程序服务”>“<app-name>”。

  2. 在应用的导航菜单中,选择“TLS/SSL 设置”>“公用证书(.cer)”>“上传公钥证书”。

  3. 对于“名称”,输入证书的名称。 在“CER 证书文件”中,选择 CER 文件。 完成后,选择“上传”。

    要上传的名称和公钥证书的屏幕截图。

  4. 上传证书后,复制证书指纹,查看是否使证书可访问

续订即将到期的证书

在证书到期之前,请确保将续订的证书添加到应用服务,并更新进程依赖于证书类型的任何 TLS/SSL 绑定。 例如,从 Key Vault 导入的证书(包括应用服务证书)每 24 小时自动同步到应用服务,并在你续订证书时更新 TLS/SSL 绑定。 对于上传的证书,没有自动绑定更新。 根据你的方案,查看相应的部分:

续订上传的证书

替换过期证书时,使用新证书更新证书绑定的方式可能会对用户体验产生不利影响。 例如,在删除某个绑定时,即使该绑定是基于 IP 的,入站 IP 地址也可能会更改。 在续订已进行基于 IP 的绑定的证书时,此结果尤其有影响。 若要避免应用的 IP 地址发生更改以及由于 HTTPS 错误而导致应用停机,请按指定顺序执行以下步骤:

  1. 上传新证书

  2. 将新证书绑定到同一自定义域,而不删除现有(过期)证书。 对于此任务,请转到应用服务应用的 TLS/SSL 设置窗格,然后选择“添加绑定”。

    此操作将替换绑定,而不是删除现有证书绑定。

  3. 删除现有证书。

续订应用服务证书

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

注意

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

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

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

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

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

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

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

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

  4. 若要改为手动续订证书,请选择“手动续订”。 可以请求在到期前 60 天手动续订证书。

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

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

    注意

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

续订从 Key Vault 导入的证书

若要续订从 Key Vault 导入应用服务的证书,请参阅续订 Azure Key Vault 证书

在密钥保管库中续订证书后,应用服务会自动同步新证书并在 24 小时内更新任何适用的 TLS/SSL 绑定。 若要手动同步,请执行以下步骤:

  1. 转到应用的“TLS/SSL 设置”页面。

  2. 在“私钥证书”下,选择导入的证书,然后选择“同步”。

管理应用服务证书

本部分包含可帮助管理已购买的应用服务证书的任务的链接:

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

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

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

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

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

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

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

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

    注意

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

导出应用服务证书

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

重要

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

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

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

  3. 在 Key Vault 中选择“开启”。

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

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

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

删除应用服务证书

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

为了防止意外删除,Azure 在应用服务证书上放置锁定。 因此,若要删除证书,必须首先删除证书上的删除锁定。

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

  2. 在左侧菜单中,选择“锁定”。

  3. 在证书上,找到锁定类型为“删除”的锁定。 在右侧,选择“删除”。

    删除应用服务证书上的锁定的屏幕截图。

  4. 现在,你可以删除应用服务证书。 在左侧菜单中,选择“概述”>“删除”。

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

使用脚本自动化

Azure CLI

将自定义 TLS/SSL 证书绑定到 Web 应用

PowerShell

$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"

# Create a resource group.
New-AzResourceGroup -Name $webappname -Location $location

# Create an App Service plan in Free tier.
New-AzAppServicePlan -Name $webappname -Location $location `
-ResourceGroupName $webappname -Tier Free

# Create a web app.
$webapp = New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname

Write-Host "Sign in to your domain provider's website and configure the following records:"
Write-Host "A CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Write-Host "A TXT record that maps asuid.$fqdn to the domain verification ID $($webapp.CustomDomainVerificationId)"
Read-Host "Press [Enter] key when ready ..."

# Before continuing, go to your DNS configuration UI for your custom domain and follow the 
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the 
# hostname "www" and point it your web app's default domain name.

# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic

# Add a custom domain name to the web app. 
Set-AzWebApp -Name $webappname -ResourceGroupName $webappname `
-HostNames @($fqdn,"$webappname.azurewebsites.net")

# Upload and bind the SSL certificate to the web app.
New-AzWebAppSSLBinding -WebAppName $webappname -ResourceGroupName $webappname -Name $fqdn `
-CertificateFilePath $pfxPath -CertificatePassword $pfxPassword -SslState SniEnabled

更多资源