You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure SDK将托管证书绑定到自定义域名?

使用新版Azure .NET SDK创建托管证书并绑定自定义域名

问题说明

你之前尝试直接设置SslState时遇到Parameter Thumbprint is null or empty错误,原因是绑定SSL必须指定已存在证书的指纹,而托管证书需要先创建才能获取该值,无法直接跳过创建步骤设置SSL状态。

操作流程

要实现托管证书的创建与绑定,需完成两个核心步骤:创建托管证书、将证书关联到已验证的自定义域名。

完整VB.NET代码示例

Imports Azure
Imports Azure.Core
Imports Azure.Identity
Imports Azure.ResourceManager
Imports Azure.ResourceManager.AppService
Imports Azure.ResourceManager.AppService.Models

Module Program
    Sub Main()
        Dim tenantId As String = "89C4A752-7028-4F94-BF6D-A5B0AB83A30A"
        Dim clientId As String = "AC4E5551-B056-4769-84AD-F7016E289122"
        Dim clientSecret As String = "EJY5du3PVx#o2P3b*B^25t@LoVu8LX2Lgo"
        Dim resourceGroupName As String = "group"
        Dim webAppName As String = "site"
        Dim customDomain As String = "example.com"

        ' 认证并获取ARM客户端
        Dim credential = New ClientSecretCredential(tenantId, clientId, clientSecret)
        Dim armClient = New ArmClient(credential)

        ' 获取目标Web应用
        Dim subscription = armClient.GetDefaultSubscriptionAsync.Result
        Dim resourceGroup = subscription.GetResourceGroups.Get(resourceGroupName).Value
        Dim webApp = resourceGroup.GetWebSites.Get(webAppName).Value

        ' --- 步骤1:创建托管证书 ---
        ' 托管证书需关联已验证的域名、Web应用所在服务计划和区域
        Dim certData = New AppServiceCertificateData With {
            .HostNames = {customDomain},
            .ServerFarmId = webApp.Data.ServerFarmId,
            .Location = webApp.Data.Location
        }

        ' 执行证书创建操作,等待Azure完成签发
        Dim certOp = resourceGroup.GetAppServiceCertificates.CreateOrUpdateAsync(
            WaitUntil.Completed,
            $"ManagedCert-{customDomain}", ' 自定义证书名称,建议包含域名便于识别
            certData
        ).Result

        Dim managedCert = certOp.Value
        ' 获取证书指纹,用于后续绑定
        Dim certThumbprint = managedCert.Data.ThumbprintString

        ' --- 步骤2:绑定证书到自定义域名 ---
        Dim bindingData = New HostNameBindingData With {
            .CustomHostNameDnsRecordType = CustomHostNameDnsRecordType.CName, ' 根据你的DNS配置选择A或CName
            .HostNameType = AppServiceHostNameType.Managed,
            .SslState = HostNameBindingSslState.SniEnabled, ' 推荐使用SNI模式,支持多证书绑定
            .ThumbprintString = certThumbprint ' 填入刚创建的托管证书指纹
        }

        ' 更新主机名绑定,完成SSL配置
        Dim bindingOp = webApp.GetSiteHostNameBindings.CreateOrUpdateAsync(
            WaitUntil.Completed,
            customDomain,
            bindingData
        ).Result

        Console.WriteLine("托管证书创建并绑定成功")
    End Sub
End Module

关键细节

  • 托管证书创建:Azure会自动完成证书的签发、续期和管理,无需手动上传PFX文件,只需指定要绑定的已验证域名即可。
  • 指纹获取:创建证书后,从AppServiceCertificateResource.Data.ThumbprintString提取指纹,这是绑定SSL时的必填参数。
  • SSL模式选择:SniEnabled是默认推荐模式,允许同一IP绑定多个SSL证书;若需独占IP的SSL,可选择IpBasedEnabled(需确保Web应用配置了独立公共IP)。

注意事项

  1. 自定义域名必须已完成验证(你的现有代码已实现这一步),否则无法创建托管证书。
  2. 每个Web应用最多可绑定10个托管证书,且证书仅支持特定顶级域名后缀。
  3. 确保使用最新稳定版的Azure .NET SDK,避免API兼容性问题。

内容的提问来源于stack exchange,提问作者InteXX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:40:56