, 당신은 내보낼 수 있습니다 .. 그것은 내가 로컬 인증서를 만드는 피하기 위해 원하는대로 내가보고 싶었어요 간단한 뭔가 바라고 있어요 를 통해 디스크 (빈 암호)를 PFX 파일로 :
$vaultName = "my-vault-name"
$certificateName = "my-cert-name"
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\$certificateName.pfx"
$pfxSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName
$pfxUnprotectedBytes = [Convert]::FromBase64String($pfxSecret.SecretValueText)
[IO.File]::WriteAllBytes($pfxPath, $pfxUnprotectedBytes)
것은 당신이 디스크에 작성하지 않고 메모리 만 개인 키 자체를보고 싶은 경우에, 시도 :
$vaultName = "my-vault-name"
$certificateName = "my-cert-name"
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\$certificateName.pfx"
$pfxSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName
$pfxUnprotectedBytes = [Convert]::FromBase64String($pfxSecret.SecretValueText)
$pfx = New-Object Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import($pfxUnprotectedBytes, $null, [Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
$pfx.PrivateKey.ExportParameters($true)
에는 지수 및 모듈러스 외에 개인 매개 변수가 표시됩니다.
당신은 (당으로 this blog post에 지침을 "다시 암호를 추가 PFX 파일 & 검색"), 다음 시도 자신의 암호를 사용하여 디스크에 PFX 파일을 보호하려는 경우 :
$vaultName = "my-vault-name"
$certificateName = "my-cert-name"
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\$certificateName.pfx"
$password = "my-password"
$pfxSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName
$pfxUnprotectedBytes = [Convert]::FromBase64String($pfxSecret.SecretValueText)
$pfx = New-Object Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import($pfxUnprotectedBytes, $null, [Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
$pfxProtectedBytes = $pfx.Export([Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
[IO.File]::WriteAllBytes($pfxPath, $pfxProtectedBytes)
AKV (Aurex Key Vault)는 REST API 문서 here 및 here에서 언급했듯이 AKV 인증서, AKV 키 및 AKV 보안의 세 가지 상호 관련 리소스를 통해 지정된 X.509 인증서를 나타냅니다. 세 명 모두 동일한 이름과 동일한 버전을 공유합니다. 확인하려면 Get-AzureKeyVaultCertificate
에서 Id
, KeyId
및 SecretId
속성을 확인하십시오.
이 3 개 자원의 각
은 주어진 X.509의 인증서를 보는 다른 관점을 제공
- AKV 인증서는 X.509 인증서의 공개 키와 인증서 메타 데이터을 제공합니다. 공개 키의 모듈 및 지수 (
n
및 e
)와 기타 cert 메타 데이터 (지문, 만료일, 주체 이름 등)가 포함됩니다. PowerShell에서, 당신은을 통해이를 얻을 수 있습니다 : 는
(Get-AzureKeyVaultCertificate -VaultName $vaultName -Name $certificateName).Certificate
- AKV 키는 X.509 인증서의 개인 키 제공합니다. 해당 인증서가 내보낼 수 없음으로 표시된 경우 서명과 같은 암호화 작업을 수행하는 데 유용 할 수 있습니다.
(Get-AzureKeyVaultKey -VaultName $vaultName -Name $certificateName).Key
- AKV 비밀은 개인을 포함한 전체 X.509 인증서을 내보낼 할 수있는 방법을 제공합니다 : PowerShell에서, 당신은 단지를 통해이 개인 키의 공공 부분을 얻을 수 있습니다 키 (정책에서 개인 키 내보내기를 허용하는 경우)
(Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName).SecretValueText
매우 완전한 응답 덕분 아드리 : 위에서 알 수 있듯이, 현재 base64 인코딩 인증서 통해 PowerShell에서 얻을 수있다! PowerShell API가 이해하기가 쉽지 않은 것처럼 비밀을 되 찾을 필요가 있음을 깨닫기 시작했습니다. .Certificate은 함정입니다 :-) 이것은 일을 멋지게 설명하는 데 도움이되었습니다. –