2015-09-29 9 views
3

Я использую библиотеку Microsoft.WindowsAzure.Management.WebSites 4.4.2-prerelease для создания/изменения Azure WebApps. Я могу создать приложение, изменить настройки, добавить пользовательский домен. Следующий шаг - добавить сертификат SSL. Вот как я это делаю:Добавить привязки SSL к Azure Website через библиотеки C# Azure Managmenet

public async Task<WebSiteUpdateResponse> UpdateSslCertificate(String sitename) 
{ 
    var updateParameters = new WebSiteUpdateParameters() 
    { 
     HostNameSslStates = new List<WebSiteUpdateParameters.WebSiteHostNameSslState>() 
     { 
      new WebSiteUpdateParameters.WebSiteHostNameSslState() 
      { 
       ToUpdate = true, 
       Name = "mysubdomain.mydomain.com", 
       SslState = WebSiteSslState.SniEnabled, 
       Thumbprint = "blbhbblblblblblblbMyCertTHUMBPRINT", 
      }, 
     }, 
    }; 
    var updateResult = await client.WebSites.UpdateAsync("Default-NorthEuropewebspace", sitename, updateParameters); 
    return updateResult; 
} 

Но после добавления сертификата я не могу видеть серт добавляемый на сайт на портале: No SSL Cert added to the site

Cert является подстановочным сертификатом и уже загруженный. Если я использую новый портал для добавления сертификата SSL на сайт, я могу сделать это без проблем, так что это не проблема с ценой.

Кроме того, если я иду в Azure Resource Manager и перейти на этот сайт и искать SslStates, я получаю это:

"hostNameSslStates": [ 
    { 
    "name": "mysubdomain.mydomain.com", 
    "sslState": 0, 
    "ipBasedSslResult": null, 
    "virtualIP": null, 
    "thumbprint": null, 
    "toUpdate": null, 
    "toUpdateIpBasedSsl": null, 
    "ipBasedSslState": 0, 
    "hostType": 0 
    }, 
    { 
    "name": "testingcreation.azurewebsites.net", 
    "sslState": 0, 
    "ipBasedSslResult": null, 
    "virtualIP": null, 
    "thumbprint": null, 
    "toUpdate": null, 
    "toUpdateIpBasedSsl": null, 
    "ipBasedSslState": 0, 
    "hostType": 0 
    }, 
    { 
    "name": "testingcreation.scm.azurewebsites.net", 
    "sslState": 0, 
    "ipBasedSslResult": null, 
    "virtualIP": null, 
    "thumbprint": null, 
    "toUpdate": null, 
    "toUpdateIpBasedSsl": null, 
    "ipBasedSslState": 0, 
    "hostType": 1 
    } 
], 

Таким образом, новый сертификат добавляется, только состояние 0 (WebSiteSslState.Disabled) и не Отпечаток не хранится.

Я что-то не так? Как я могу назначить SSL-сертификат сайту?

ответ

1

От https://github.com/davidebbo/AzureWebsitesSamples/issues/2 Я цитирую ответ на этот вопрос из @trailmax и для будущих ссылок.

Мне удалось заставить его работать. Имена хостов должны быть добавлены CreateOrUpdateSiteHostNameBindingAsync(), а не site.HostNames:

 var binding = new HostNameBinding() 
     { 
      Location = "North Europe", 
      Name = hostName, 
      CustomHostNameDnsRecordType = CustomHostNameDnsRecordType.CName, 
      HostNameType = HostNameType.Verified, 
      SiteName = siteName, 
      Type = "Microsoft.Web/sites/hostNameBindings", 
     }; 
     var result = await websiteClient.Sites.CreateOrUpdateSiteHostNameBindingAsync(resourceGroupName, 
siteName, hostName, binding); 
     site = websiteClient.Sites.GetSite(resourceGroupName, siteName); 

     site.HostNameSslStates.Add(new HostNameSslState 
     { 
      Name = hostName, 
      Thumbprint = certificate.Thumbprint, 
      SslState = SslState.SniEnabled, 
      ToUpdate = true, 
     }); 

     site = await websiteClient.Sites.CreateOrUpdateSiteAsync(resourceGroupName, 
siteName, site); 

Хотя я не уверен, что все параметры в объекта HostNameBinding требуется. Не могли бы вы подтвердить, что там ? (Я взял значения из Resource Explorer)

+1

Спасибо, что скопировали его здесь. Не понял, что я не единственный с этой проблемой. – trailmax