@Sasha, там не много деталей, чтобы идти здесь и я ненавижу чтобы указать очевидное, учитывая, что вы все пробовали, но сообщение об ошибке довольно ясно: «У вас нет разрешения на получение необходимой информации о главном сервисе».
Некоторые вещи, чтобы уточнить и проверить:
- ли вы купить Azure "App Service сертификат"?
- Является ли сертификат в статусе «выдан»?
- Вы вошли в систему как владелец подписки или владелец дал вам доступ администратора к своей подписке? Полагаю, последнее не достаточно хорошо.
- Вы завершили трехэтапный процесс проверки?
Если вы все это сделали, ваш сертификат теперь хранится в хранилище ключей Azure. Когда вы создаете хранилище ключей Azure, существует опция расширенного доступа для «Разрешить доступ к виртуальным машинам Azure для развертывания» (см. Изображение). Его справочная информация читает: «Указывает, разрешено ли Azure Virtual Machines получать сертификаты, хранящиеся в виде секретов из хранилища ключей».
Тем не менее, так как вы хотите файл .pfx, ниже пример сценария PowerShell, извлеченные из MSDN блогов, чтобы сделать это. Предоставьте соответствующие значения для четырех параметров «$» ниже и сохраните сценарий как 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"
Введите следующие команды в консоли PowerShell для выполнения сценария:
Powershell –ExecutionPolicy Bypass
.\copyasc.ps1
После выполнения скрипта, вы увидите новый файл в текущем каталоге под названием «appservicecertificate.pfx». Это защищенный паролем PFX, консоль PowerShell отображает соответствующий пароль.
Мы не хотим использовать ssl-сертификат за пределами VM, но мы не понимаем, как назначить его уже созданному VM ... –
Можете ли вы поделиться некоторым кодом о том, как вы пытаетесь это сделать. Теперь вы предоставляете информацию только о том, что у вас недостаточно прав для доступа к вашему хранилищу ключей. Вы вошли в систему как владелец или администратор? – Peter
Привет @Peter, как admin, но я нашел это уже в stackoverflow http://nkv.name/screenshots/2017-02-06_175455.png Так что я думаю, что это невозможно :( –