【问题标题】:Azure Authentication With Certificate Setup带有证书设置的 Azure 身份验证
【发布时间】: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


【解决方案1】:

我正在尝试设置 Azure Key Vault,以便可以使用我的 PHP 应用程序中的证书进行访问

您可以从tutorial 获得答案和演示代码。 正如 juunas 提到的,您需要一个 .cer 文件。

下面是来自tutorial的sn-p

$certificate = 新对象 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 "Verify" -StartDate $startDate -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

【讨论】:

  • 感谢你们的帮助。不过还是有问题。根据您给我的链接,使用 $credValue 变量,-KeyValue 和 -KeyType 不是有效参数。我在这里也看不到他们docs.microsoft.com/en-us/powershell/module/azurerm.resources/…。我在 PowerShell 中收到错误消息“找不到与参数名称 'KeyValue' 匹配的参数”。有解决办法吗?
  • @GeoffL 我已经更新了代码。并在我这边进行测试。更多信息,请参阅更新。
猜你喜欢
  • 2020-11-11
  • 1970-01-01
  • 2018-02-13
  • 2018-09-16
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
相关资源
最近更新 更多