我正在尝试设置Azure Key Vault,以便我可以使用PHP应用程序中的证书进行访问。我试图按照https://azurecto.com/azure-keyvault-authenticating-with-certificates-and-reading-secrets/上的步骤进行操作,该步骤说您必须创建一个AD应用程序,但我收到了错误消息。这就是我的尝试。
一个。我的Windows机器上已经有一个自签名的.pfx文件。
B中。因为我已经有了一个.pfx文件,所以我改变了他的步骤。我使用
将.pfx文件导入控制台$cert = Get-PfxCertificate -FilePath "C:\azurecrt.pfx"
℃。然后它说要创建一些变量
$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:证书无效:密钥值是无效证书"
任何建议都将不胜感激。感谢
答案 0 :(得分:0)
我正在尝试设置Azure Key Vault,以便我可以使用我的PHP应用程序中的证书进行访问
您可以从此tutorial获取答案和演示代码。 由于juunas提到您需要 .cer 文件。
以下是tutorial
$ certificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$ certificate.Import(' c:\ location \ certificate.cer')#需要一个.cer文件。
$ startDate = $ certificate.GetEffectiveDateString()
$ endDate = $ certificate.GetExpirationDateString()
$ credValue = [System.Convert] :: ToBase64String($ certificate.GetRawCertData())
$ azureADApplication = New-AzureRmADApplication -DisplayName" {application name}" -HomePage" {application page}" -IdentifierUris" {application page}" -KeyValue $ credValue -KeyType" AsymmetricX509Cert" -KeyUsage"验证" -StartDate $ startDate -EndDate $ endDate
德尔>
<强>更新强>
我已将代码更新如下。我已经在我这边测试了它。
$credValue = [System.Convert]::ToBase64String($certificate.GetRawCertData())
$azureADApplication = New-AzureRmADApplication -DisplayName "{application name}" -HomePage "{application page}" -IdentifierUris "{application page}" -CertValue $credValue -StartDate $startDate -EndDate $endDate
$azureADApplication.ApplicationId
$principal= New-AzureRmADServicePrincipal -ApplicationId $azureADApplication.ApplicationId