How to set SSL bindings on Azure Web Apps via Management Rest API?
我们正在使用网站管理 SDK 在 Azure 上构建自动化部署。
我们目前设法通过代码将主机名添加到 Web 应用程序。
1 2 3 4 5 6 7 8 | using (websiteClient) { var configuration = websiteClient.WebSites.Get(webspace, WebsiteName +"-" + Version, new WebSiteGetParameters()); configuration.WebSite.HostNames.Add(ClientName +"." + DnsZoneName); var response = websiteClient.WebSites.Update(webspace, WebsiteName +"-" + Version, new WebSiteUpdateParameters() { HostNames = configuration.WebSite.HostNames }); } |
但是我们无法让 HostNameSslStates 正常工作。
以类似的方式,我们尝试为该网站添加 SSL 状态。
1 | configuration.WebSite.HostNameSslStates.Add(new WebSite.WebSiteHostNameSslState() { Name = ClientName +"." + DnsZoneName, SslState = WebSiteSslState.SniEnabled, Thumbprint ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }); |
但这不会导致 Azure 门户上的 SSL 绑定。
任何对如何添加调整此主机名的 SSL 状态有任何经验/代码示例的人?
希望对大家有所帮助。
安装管理包
1 | Install-Package Microsoft.Azure.Management.Fluent |
设置 AAD、设置密钥和密码
https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal#get-application-id-and-authentication-key 在订阅下为特定应用设置访问级别 https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var azure = Azure.Authenticate(creds).WithSubscription(SUSCRIPTION_ID);
var apps = azure.WebApps.List( );
foreach( var app in apps )
{
if( app.Name == REQUIRED_APP_NAME )
{
Console.WriteLine( app.Name );
Console.WriteLine( $"Applying domain name {SUB_DOMAIN}.{DOMAIN}" );
var updatedApp = app.Update( )
.DefineHostnameBinding( )
.WithThirdPartyDomain( DOMAIN )
.WithSubDomain( SUB_DOMAIN )
.WithDnsRecordType( CustomHostNameDnsRecordType.CName )
.Attach( )
.Apply( );
Console.WriteLine( $"Applying SSL for {SUB_DOMAIN}.{DOMAIN}" );
await azure
.WebApps
.Inner
.CreateOrUpdateHostNameBindingWithHttpMessagesAsync(
RESOURCE_GROUP,
app.Name,
$"{SUB_DOMAIN}.{DOMAIN}",
new HostNameBindingInner(
azureResourceType: AzureResourceType.Website,
hostNameType: HostNameType.Verified,
customHostNameDnsRecordType: CustomHostNameDnsRecordType.CName,
sslState: SslState.SniEnabled,
thumbprint: EXISTING_THUMBPRINT ) );
Console.WriteLine("OK" );
}
}