2017-02-06 4 views
0

Мы приобрели сертификат через Azure и хотели бы использовать его на том же VM. Нам просто нужно .pfx файл.Как импортировать сертификат из Azure?

Мы пытались почти все, и мы получаем следующую ошибку:

"You do not have permission to get the service prinicipal information needed to assign a Key Vault to your certificate. Please login with an account which is either the owner of the subscription or an admin of the Active Directory to configure Key Vault settings."

Но у нас есть права ...

+0

Мы не хотим использовать ssl-сертификат за пределами VM, но мы не понимаем, как назначить его уже созданному VM ... –

+0

Можете ли вы поделиться некоторым кодом о том, как вы пытаетесь это сделать. Теперь вы предоставляете информацию только о том, что у вас недостаточно прав для доступа к вашему хранилищу ключей. Вы вошли в систему как владелец или администратор? – Peter

+0

Привет @Peter, как admin, но я нашел это уже в stackoverflow http://nkv.name/screenshots/2017-02-06_175455.png Так что я думаю, что это невозможно :( –

ответ

0

@Sasha, там не много деталей, чтобы идти здесь и я ненавижу чтобы указать очевидное, учитывая, что вы все пробовали, но сообщение об ошибке довольно ясно: «У вас нет разрешения на получение необходимой информации о главном сервисе».

Некоторые вещи, чтобы уточнить и проверить:

  1. ли вы купить Azure "App Service сертификат"?
  2. Является ли сертификат в статусе «выдан»?
  3. Вы вошли в систему как владелец подписки или владелец дал вам доступ администратора к своей подписке? Полагаю, последнее не достаточно хорошо.
  4. Вы завершили трехэтапный процесс проверки?

Если вы все это сделали, ваш сертификат теперь хранится в хранилище ключей Azure. Когда вы создаете хранилище ключей Azure, существует опция расширенного доступа для «Разрешить доступ к виртуальным машинам Azure для развертывания» (см. Изображение). Его справочная информация читает: «Указывает, разрешено ли Azure Virtual Machines получать сертификаты, хранящиеся в виде секретов из хранилища ключей».

Enable access to Azure Virtual Machines for deployment

Тем не менее, так как вы хотите файл .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 отображает соответствующий пароль.

+0

Ты мой герой. Большое спасибо! –

Смежные вопросы