如何使用Powershell将证书添加到Azure RM网站

时间:2016-01-11 17:12:46

标签: azure azure-web-sites azure-powershell azure-resource-manager

How to add an SSL certificate to an azure website using powershell?

轻微相关

我正在尝试通过Powershell将证书添加到Azure RM网站。

我认为没有直接的Azure Powershell命令,需要通过New-AzureRmResource

完成

3 个答案:

答案 0 :(得分:3)

查看ARM Template "Microsoft.Web/certificates"模板需要一个pfxblob和一个密码。

获取pfxblob似乎最简单的方法是通过New-AzureRmApplicationGatewaySslCertificate(感谢指针的@vigneshaj)读取source,这似乎只是一个本地会话cmdlet。因此,对于应用程序网关来说无关紧要,我们所需要的只是它传回的数据。

$pfx = New-AzureRmApplicationGatewaySslCertificate -Name example `
        -CertificateFile E:\PS\example.pfx `
        -Password "bananas" 

获得这些数据后,我们只需将其插入New-AzureRmResource即可在Azure上创建我们的证书。

这个问题的一个小问题是,如果你是一个小偷(像我一样)并且你从中国CA那里获得了sha256证书的免费证书,这个过程将剥离签署的证书使用sha256的页面,因此它会回退到TLS 1.2,这会产生错误(至少在Chrome上)

$ResourceLocation = "West Europe"
$ResourceName = "Newcertificate"
$PropertiesObject = @{
pfxBlob = $pfx.Data
password = $pfx.Password 
}

New-AzureRmResource -Name $ResourceName -Location $ResourceLocation `
                    -PropertyObject $PropertiesObject `
                    -ResourceGroupName examplecomRG `
                    -ResourceType Microsoft.Web/certificates `
                    -ApiVersion 2015-08-01 -Force

下一个工作是配置您的Web App以使用该证书。因为这些属性是hostNameSslStates数组的子对象,所以我创建了一个内部哈希表,然后将其附加。我确信这是一种更优雅的方式,但这很有效!

$ResourceName = "ConfuseioWebapp"
$InnerPropertiesObject = @{
        name = "www.example.com"
        sslState = 1
        thumbprint = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
      }
$PropertiesObject = @{
    "hostNameSslStates" = [Object[]]$InnerPropertiesObject 
}

New-AzureRmResource -Name $ResourceName `
                    -Location $ResourceLocation `
                    -PropertyObject $PropertiesObject `
                    -ResourceGroupName examplecomRG `
                    -ResourceType Microsoft.Web/sites `
                    -ApiVersion 2015-08-01 -Force

这就是它。

答案 1 :(得分:3)

在最新版本的Azure PowerShell v 1.1.0中,有许多新命令可以在Azure Web Apps中处理SSL证书

您可以上传证书并使用

将其绑定到主机名
New-AzureRmWebAppSSLBinding -ResourceGroupName myresourcegroup -WebAppName mytestapp -CertificateFilePath PathToPfxFile -CertificatePassword PlainTextPwd -Name www.contoso.com

然后删除绑定但不删除证书,应用程序应该能够在添加引用该证书的应用程序设置后使用它(这应该使用门户网站完成 - PowerShell命令将很快 - 现在没有ETA)

Remove-AzureRmWebAppSSLBinding -ResourceGroupName myresourcegroup -WebAppName mytestapp -Name www.contoso.com -DeleteCertificate $false

答案 2 :(得分:1)

我遇到了以下文章,该文章通过PowerShell配置SSL,创建了Azure Application Gateway

https://azure.microsoft.com/en-us/documentation/articles/application-gateway-ssl/