【问题标题】:How to upload multiple SSL certificate for azure web app如何为 Azure Web 应用上传多个 SSL 证书
【发布时间】:2022-01-21 22:51:24
【问题描述】:

我想在单个 azure Web 应用上添加 100 多个自定义域,每个域都有自己的 SSL 证书(从 cloudflare 下载)。

有没有办法一次性从 azure cli 针对每个自定义域上传 100 多个 pfx 证书文件?

例如:abc.com 拥有自己的 ssl 证书 xyz.com 拥有自己的 ssl 证书

我需要批量添加自定义域及其 ssl 证书。

目前,我可以使用以下命令将 1 pfx 上传到应用程序:

New-AzWebAppSSLBinding -WebAppName WebApiStaging -Name devops.prod.xyz -ResourceGroupName Staging -CertificateFilePath C:\prod.pfx -CertificatePassword XXXXXX -SslState SniEnabled

请提出可能的选项。谢谢

【问题讨论】:

  • 您知道如何使用 azure cli 仅上传 1 个 pfx 吗?如果你这样做,请发布代码,然后我们可能会帮助你编写一些 PowerShell 来为剩余的 99 个证书重复它:)
  • 感谢@MathiasR.Jessen 的及时回复。我正在使用以下命令使用 azure cli 上传 1 个 pfx 文件。
  • New-AzWebAppSSLBinding -WebAppName WebApiStaging -Name devops.prod.xyz -ResourceGroupName Staging -CertificateFilePath C:\prod.pfx -CertificatePassword XXXXXX -SslState SniEnabled

标签: azure powershell ssl azure-web-app-service azure-cli


【解决方案1】:

让我们看一下您正在使用的命令的变量部分:

New-AzWebAppSSLBinding -WebAppName WebApiStaging -Name devops.prod.xyz -ResourceGroupName Staging -CertificateFilePath C:\prod.pfx -CertificatePassword XXXXXX -SslState SniEnabled

由于单个应用程序有多个绑定,-WepAppName-ResourceGroupName 将保持不变,我假设您也希望为所有绑定启用 SNI - 这给我们留下了:

  • -Name <domain fqdn>
  • -CertificateFilePath <path to pfx file>
  • -CertificatePassword <pfx password>

因此,每次上传证书都需要这 3 条信息。

我建议您将包含这 3 列的电子表格放在一起,并将其保存为 CSV 文件,例如:

"Name","CertificateFilePath","CertificatePassword"
"abc.domain.tld","C:\cert1.pfx","s3cr3tp@ssw0rd"
"def.domain.tld","C:\cert2.pfx","s3cr3tp@ssw0rd2"
...

获得 CSV 后,只需调用 Import-Csv 导入数据,然后对每一行重复 New-AzWebAppSSLBinding 调用即可:

foreach($row in Import-Csv .\path\to\bindings.csv){
    New-AzWebAppSSLBinding -WebAppName WebApiStaging -Name $row.Name -ResourceGroupName Staging -CertificateFilePath $row.CertificateFilePath -CertificatePassword $row.CertificatePassword -SslState SniEnabled
}

【讨论】:

  • 我正在尝试使用您提到的相同命令导入逗号分隔的 CSV,但看起来我错过了一些东西,请您帮我解决这个问题。以下是该命令的输出。
  • New-AzWebAppSSLBinding:无法验证参数“名称”上的参数。参数为 null 或空。提供一个不为 null 或空的参数,然后重试该命令。在 line:2 char:65 + ... pSSLBinding -WebAppName WebApiStaging -Name $row.Name -Resour ... + ~~~~~~~~~ + CategoryInfo : InvalidData: (:) [New-AzWebAppSSLBinding], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Azure.Commands.WebApps.Cmdlets.WebApps.NewAzureWebAppSSLBinding
  • @Atif 这表明 1) 您的 CSV 没有 name 列,或 2) CSV 文件中的至少一行没有 name 列的值。如果您只执行Import-Csv .\path\to\file.csv 而不执行任何其他操作,您会在控制台中看到预期的数据吗?
  • 这里是命令Import-Csv .\path\to\file.csv的输出 那就是预期的输出 Name,CertificateFilePath,CertificatePassword ------------------------ --------------------- testing.apexprod.xyz,C:\apexprod.pfx,admin123
  • @Atif 看起来它导入了 Name,CertificateFilePath,CertificatePassword 作为单个列名。确保在 CSV 文件中正确引用各个列的值
猜你喜欢
  • 1970-01-01
  • 2020-09-21
  • 2016-03-26
  • 2019-12-26
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
相关资源
最近更新 更多