【发布时间】:2018-04-08 04:04:16
【问题描述】:
我正在尝试设置 Azure Key Vault,以便我可以使用我的 PHP 应用程序中的证书进行访问。我正在尝试按照https://azurecto.com/azure-keyvault-authenticating-with-certificates-and-reading-secrets/ 的步骤操作,上面说您必须创建一个 AD 应用程序,但我收到了错误消息。这是我尝试过的。
A.我的 Windows 机器上已经有一个自签名的 .pfx 文件。
B.因为我已经有一个 .pfx 文件,所以我稍微改变了他的步骤。我使用
将 .pfx 文件导入控制台$cert = Get-PfxCertificate -FilePath "C:\azurecrt.pfx"
C.然后它说要创建一些变量
$vaultName = 'Picklistsca1'
$dnsName = 'picklistsfakeurl.ca'
$dummyUrl = "http://$dnsName/"
D.然后它说调用 New-AzureRmADApplication。这就是我遇到麻烦的地方。
$app = New-AzureRmADApplication
-DisplayName $dummyUrl
-HomePage $dummyUrl
-IdentifierUris $dummyUrl
-CertValue $cert
-StartDate '2018-04-07 6:40:23 PM'
-EndDate '2019-04-07 6:40:23 PM'
我收到错误消息“New-AzureRmADApplication : 无法将原始值转换为预期的类型 'Edm.Binary'。有关更多详细信息,请参阅内部异常。”
我认为这是因为 $cert 必须采用 base64 格式,但我尝试将其转换为 base64 的所有操作都失败了。例如我已经尝试过
$bytes = [System.IO.File]::ReadAllBytes("C:\azurecrt.pfx")
$b64 = [System.Convert]::ToBase64String($bytes)
然后在 New-AzureRmADApplication 中将 $cert 替换为 $b64。这给了我错误“New-AzureRmADApplication : Invalid certificate: Key value is invalid certificate”
任何建议将不胜感激。谢谢
【问题讨论】:
-
你不应该上传私钥!您只需要 .cer 文件中的公钥 :)
-
Azure AD 只需要公钥来验证请求。
-
这应该是 base64
.pem或 Windows 世界等价物....cer或.crt,其中一个是正确的 :)
标签: azure active-directory certificate