2017-02-06 2 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

VM 외부에서 ssl sertificate를 사용하고 싶지는 않지만 이미 생성 된 VM에 할당하는 방법도 이해할 수 없습니다. –

+0

어떻게하면 되나요? 귀하가 제공하는 정보는 귀하가 귀하의 키 저장소에 액세스 할 권한이 충분하지 않다는 것을 제시합니다. 소유자 또는 관리자로 로그온 했습니까? – Peter

+0

안녕하세요 @ 피터, 관리자로하지만 난 이미 이것을 발견 stackoverflow http://nkv.name/screenshots/2017-02-06_175455.png 그래서 그게 불가능하다고 생각 :( –

답변

0

@Sasha를, 거기에 가서 많은 세부 여기에없는 내가 싫어 당신이 모든 것을 시도했음을 감안할 때 명백한 것을 말하지만 오류 메시지는 "당신은 필요한 서비스 주체 정보를 얻을 수있는 권한이 없습니다"라고 분명합니다.

명확히하고 확인 할 몇 가지 :

  1. 당신은 푸른 '앱 서비스 인증서 "구입 했나요는?
  2. 인증서가 '발행 됨'상태입니까?
  3. 구독 소유자로 로그인했거나 소유자가 구독에 대한 관리자 액세스 권한을 부여 했습니까? 후자는 충분히 좋지 않습니다.
  4. 3 단계 유효성 검사 프로세스를 완료 했습니까?

모든 작업을 완료하면 인증서가 Azure Key Vault에 저장됩니다. Azure Key Vault를 만들 때, "배치를 위해 Azure Virtual Machines에 대한 액세스 활성화"(그림 참조)에 대한 고급 액세스 정책 옵션이 있습니다. 도움말 정보에는 "Azure 가상 시스템이 키 저장소에서 비밀로 저장된 인증서를 검색 할 수 있는지 여부를 지정합니다."

Enable access to Azure Virtual Machines for deployment

당신이 .pfx 파일을 원하기 때문에, 아래 단지 그렇게 MSDN 블로그에서 추출 된 샘플 PowerShell 스크립트는, 말했다. 아래 4 개의 "$"매개 변수에 적절한 값을 제공하고 스크립트를 copyasc.ps1로 저장하십시오. 스크립트가 실행됩니다

Powershell –ExecutionPolicy Bypass 
.\copyasc.ps1 

후에는 'appservicecertificate.pfx'라는 현재 디렉토리에 새 파일을 볼 것입니다 :

$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 콘솔에서 다음 명령 스크립트를 실행합니다. 이것은 암호로 보호 된 PFX이며, PowerShell 콘솔은 해당 암호를 표시합니다.

+0

당신은 내 영웅입니다. 고마워요! –