将Azure SSL证书导出为pfx文件

Nik*_*Nik 6 azure ssl-certificate azure-web-sites

我从azure购买了一张外卡证书.它现在位于Key Vault中.我需要将它上传到我们的其他服务器,该服务器托管同一域的其他应用程序之一.没有选项可以将证书导出为天蓝色门户网站中任何位置的.pfx文件.

请帮忙.

Dmi*_*kov 8

您可以使用PowerShell创建Azure App Service证书的本地PFX副本.

从以下变量中提供适当的值并将脚本另存为copyasc.ps1.

变量:

$appServiceCertificateName = "ascdemo"
$resourceGroupName = "ascdemorg"
$azureLoginEmailId = "user@microsoft.com"
$subscriptionId = "fb2c25dc-6bab-45c4-8cc9-cece7c42a95a"
Run Code Online (Sandbox Code Playgroud)

copyasc.ps1:

$appServiceCertificateName = ""
$resourceGroupName = ""
$azureLoginEmailId = ""
$subscriptionId = ""

Login-AzureRmAccount
Set-AzureRmContext -SubscriptionId $subscriptionId

$ascResource = Get-AzureRmResource -ResourceName $appServiceCertificateName -ResourceGroupName $resourceGroupName -ResourceType "Microsoft.CertificateRegistration/certificateOrders" -ApiVersion "2015-08-01"
$keyVaultId = ""
$keyVaultSecretName = ""

$certificateProperties=Get-Member -InputObject $ascResource.Properties.certificates[0] -MemberType NoteProperty
$certificateName = $certificateProperties[0].Name
$keyVaultId = $ascResource.Properties.certificates[0].$certificateName.KeyVaultId
$keyVaultSecretName = $ascResource.Properties.certificates[0].$certificateName.KeyVaultSecretName

$keyVaultIdParts = $keyVaultId.Split("/")
$keyVaultName = $keyVaultIdParts[$keyVaultIdParts.Length - 1]
$keyVaultResourceGroupName = $keyVaultIdParts[$keyVaultIdParts.Length - 5]
Set-AzureRmKeyVaultAccessPolicy -ResourceGroupName $keyVaultResourceGroupName -VaultName $keyVaultName -UserPrincipalName $azureLoginEmailId -PermissionsToSecrets get
$secret = Get-AzureKeyVaultSecret -VaultName $keyVaultName -Name $keyVaultSecretName
$pfxCertObject=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList @([Convert]::FromBase64String($secret.SecretValueText),"", [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
$pfxPassword = -join ((65..90) + (97..122) + (48..57) | Get-Random -Count 50 | % {[char]$_})
$currentDirectory = (Get-Location -PSProvider FileSystem).ProviderPath
[Environment]::CurrentDirectory = (Get-Location -PSProvider FileSystem).ProviderPath
[io.file]::WriteAllBytes(".\appservicecertificate.pfx", $pfxCertObject.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $pfxPassword))
Write-Host "Created an App Service Certificate copy at: $currentDirectory\appservicecertificate.pfx"
Write-Warning "For security reasons, do not store the PFX password. Use it directly from the console as required."
Write-Host "PFX password: $pfxPassword"
Run Code Online (Sandbox Code Playgroud)

在PowerShell控制台中键入以下命令以执行脚本:

Powershell –ExecutionPolicy Bypass
.\copyasc.ps1
Run Code Online (Sandbox Code Playgroud)

您可以在Azure App Service团队博客上找到更多详细信息创建App Service证书的本地PFX副本

如果您有想要在Azure App Service生态系统之外使用的应用服务证书,请尝试一下,让我们知道它是如何进行的.如果您遇到任何问题,请通过Stackoverflow或Azure App Service论坛告知我们.

  • 来吧,伙计们,这是一个按钮导出. (10认同)
  • 我需要在本地运行的步骤: 1. `Set-ExecutionPolicy RemoteSigned`,2. `Install-Module AzureRM -AllowClobber`(虽然不确定 `-AllowClobber` 是否必要),3. `Import-Module AzureRM`,4. 运行迪米特里的剧本。希望这对其他人有帮助。完成后,出于安全考虑考虑改回原来的执行策略 (2认同)