Аутентификация Azure с настройкой сертификата

avatar
Geoff L
8 апреля 2018 в 04:04
494
1
0

Я пытаюсь настроить Azure Key Vault, чтобы получить доступ с помощью сертификата из моего приложения PHP. Я пытаюсь выполнить шаги на https://azurecto.com/azure-keyvault-authenticating-with-certificates-and-reading-secrets/, где говорится, что вам нужно создать приложение AD, но я получаю сообщения об ошибках. Вот что я пробовал.

А. У меня уже есть самозаверяющий файл .pfx на моем компьютере с Windows.

Б. Поскольку у меня уже есть файл .pfx, я немного изменю его шаги. Я импортирую файл .pfx в консоль с

$cert = Get-PfxCertificate -FilePath "C:\azurecrt.pfx"

К. Затем он говорит создать некоторые переменные

$vaultName = 'Picklistsca1'
$dnsName = 'picklistsfakeurl.ca'
$dummyUrl = "http://$dnsName/"

Д. Затем он говорит, вызовите 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)

Затем замените $cert на $b64 в New-AzureRmADApplication. Это дает мне ошибку «New-AzureRmADApplication: недействительный сертификат: значение ключа является недопустимым сертификатом»

Любой совет будет принят с благодарностью. Спасибо

Источник
juunas
8 апреля 2018 в 08:36
0

Вы не должны загружать закрытый ключ! Вам нужен только открытый ключ в файле .cer :)

juunas
8 апреля 2018 в 08:36
0

Azure AD требуется только открытый ключ для проверки запроса.

evilSnobu
8 апреля 2018 в 20:38
0

И это должно быть в base64 .pem или в мире Windows, эквивалентном этому... .cer или .crt, один из них правильный :)

Ответы (1)

avatar
Tom Sun - MSFT
9 апреля 2018 в 01:49
0

Я пытаюсь настроить Azure Key Vault, чтобы получить доступ с помощью сертификата из моего приложения PHP

Вы можете получить ответ и демонстрационный код из этого руководства. Как упомянул juunas, вам нужен файл .cer.

Ниже приведен фрагмент из учебника

$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 "{имя приложения}" -HomePage "{страница приложения}" -IdentifierUris "{страница приложения}" -KeyValue $credValue -KeyType "AsymmetricX509Cert" -KeyUsage "Verify" -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

enter image description here

Geoff L
11 апреля 2018 в 03:02
0

Спасибо за помощь ребята. Тем не менее, все еще есть проблема. Согласно этой ссылке, которую вы мне дали, с переменной $credValue -KeyValue и -KeyType не являются допустимыми параметрами. Я не вижу их и здесь docs.microsoft.com/en-us/powershell/module/azurerm.resources/…. Я получаю сообщение об ошибке в PowerShell «Не удается найти параметр, соответствующий имени параметра «KeyValue»». Есть ли решение?

Tom Sun - MSFT
11 апреля 2018 в 05:42
0

@GeoffL Я обновил код. И протестировать на моей стороне. Для получения дополнительной информации, пожалуйста, обратитесь к обновлению.