Я всегда прячусь здесь, но, наконец, у меня есть вопрос, на который я действительно нигде не могу ответить или найти в Интернете. Я обнаружил, что у людей возникают проблемы с загрузкой файла .pfx, но здесь это не так.
Я пытаюсь обновить сертификат службы приложений в моем шлюзе приложений в Azure, чтобы мой SSL продолжал работать. Проблема заключается в следующем:
- Сначала у меня была проблема с разрешением, но теперь я могу без проблем загрузить файл .pfx, используя ссылку, предоставленную Microsoft
- Для сертификата установлено автоматическое обновление в Azure (и Azure сообщает, что он действителен до 20 октября 2009 года; это правильно, и он только что был обновлен и выдан)
- После загрузки, однако ... Я заметилдата в сертификате все еще установлена на октябрь 19 года.
- Пока что я не знаю, почему этот метод сработал в прошлом году ... Я просто хочу скачать новый .pfx и загрузить его на свой шлюз приложений.
Я пытался загрузить его через Powershell, Azure CLI, Old Azure CLI. но увы ...
** Редактировать: ** Я не мог заставить его работать и создал совершенно новый сертификат для того же домена подстановки. И - удивительно, удивительно - теперь Azure действительно создал новые секреты в хранилище ключей для использования с этим сертификатом. Вопрос остается ... Почему он этого не делает, когда существующий сертификат автоматически обновляется ???
Возможно, опять что-то простое, но я не вижу этого. Кто-нибудь из вас знает, как решить эту проблему?
Спасибо!
Добавлены некоторые доказательства:
Снимок экрана: данные сертификата
Снимок экрана: ключ хранилища, секретная дата
Скрипт для записи:
# Script for exporting pfx certificate from the Azure Cloud
#
# Type the following commands in PowerShell console to execute the script:
# > Powershell –ExecutionPolicy Bypass
# > .\copyasc.ps1
#
param (
[string]$appServiceCertificateName = "Cert_name",
[string]$azureLoginEmailId = "username@contoso.com"
)
$resourceGroupName = "RG_name"
$subscriptionId = "sub_id"
$exportFileName = "$appServiceCertificateName.pfx"
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
New-Item $currentDirectory\$exportFileName -ItemType file
[io.file]::WriteAllBytes(".\$exportFileName", $pfxCertObject.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $pfxPassword))
Write-Host "Created an App Service Certificate copy at: $currentDirectory\$exportFileName"
Write-Warning "For security reasons, do not store the PFX password. Use it directly from the console as required."
Write-Host "PFX password: $pfxPassword"