【问题标题】:How to add a certificate to an Azure RM website with Powershell如何使用 Powershell 将证书添加到 Azure RM 网站
【发布时间】:2016-04-16 02:26:12
【问题描述】:

与How to add an SSL certificate to an azure website using powershell?轻度相关

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

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

【问题讨论】:

  • 我已经发布了解决方案here。

标签: azure azure-web-app-service azure-powershell azure-resource-manager


【解决方案1】:

我遇到了下面的文章,它通过创建 Azure 应用程序网关来通过 powershell 配置 SSL

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

【讨论】:

  • 不幸的是,该证书对 Web 应用程序不可见。但是,查看New-AzureRmApplicationGatewaySslCertificate 的source 似乎确实将证书转换为base64string - 这似乎更近了一步 - 所以谢谢!
【解决方案2】:

查看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 上创建我们的证书。

这个的小问题是,如果你是一个小气鬼(像我一样)并且你已经从那个提供 sha256 证书的中国 CA 那里获得了一个免费证书,这个过程将剥离签署的证书带有 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 应用程序以使用该证书。因为这些属性是 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

差不多就是这样。

【讨论】:

  • 效果很好!谢谢!要获取 SSL 证书 blob,请查看命令的工作原理github.com/Azure/azure-powershell/blob/…
  • 我在我的 powershell 版本中发现,New-AzureRmApplicationGatewaySslCertificate 需要一个安全字符串作为密码,而 New-AzureRmResource 只接受 $PropertiesObject 中的纯字符串密码
【解决方案3】:

在最新版本的 Azure PowerShell v 1.1.0 中,有许多新命令用于处理 Azure Web 应用程序中的 SSL 证书

您可以上传证书并将其绑定到主机名使用

New-AzureRmWebAppSSLBinding -ResourceGroupName myresourcegroup -WebAppName mytestapp -CertificateFilePath PathToPfxFile -CertificatePassword PlainTextPwd -Name www.contoso.com

然后删除绑定但不删除证书,在添加引用该证书的应用程序设置后,应用程序应该能够使用它(这应该使用门户完成 - 执行此操作的 PowerShell 命令很快就会出现 -暂时没有预计到达时间)

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

【讨论】:

  • 你能说一下Hostname到底是什么吗?
猜你喜欢
  • 2014-05-28
  • 2016-10-12
  • 1970-01-01
  • 2015-02-04
  • 2012-03-17
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多