Создайте самозаверяющий открытый сертификат для проверки подлинности приложения.
Идентификатор Microsoft Entra поддерживает два типа проверки подлинности для субъектов-служб: аутентификация на основе паролей (секрет приложения) и проверка подлинности на основе сертификатов. Хотя секреты приложений можно легко создать в портал Azure или с помощью API Майкрософт, например Microsoft Graph, они долгое время и не так безопасны, как сертификаты. Поэтому рекомендуется, чтобы приложение использовало сертификат, а не секрет.
Для тестирования вместо сертификата, подписанного центром сертификации, можно использовать самозаверяющий открытый сертификат. В этом руководстве вы будете использовать PowerShell для создания и экспорта самозаверяющего сертификата.
Внимание
Самозаверяющие сертификаты — это цифровые сертификаты, которые не подписаны доверенным сторонним ЦС. Самозаверяющие сертификаты создаются, выдаются и подписаны компанией или разработчиком, отвечающими за подписанный веб-сайт или программное обеспечение. Именно поэтому самозаверяющиеся сертификаты считаются небезопасными для общедоступных веб-сайтов и приложений.
При создании сертификата с помощью PowerShell можно указать такие параметры, как криптографические и хэш-алгоритмы, срок действия сертификата и доменное имя. Затем сертификат можно экспортировать с закрытым ключом или без нее в зависимости от потребностей приложения.
Приложение, инициирующее сеанс проверки подлинности, требует наличия закрытого ключа, а приложение, которое подтверждает проверку подлинности, — открытого ключа. Таким образом, если вы выполняете проверку подлинности из классического приложения PowerShell в идентификатор Microsoft Entra, экспортируете только открытый ключ (.cer файл) и отправляете его в портал Azure. Приложение PowerShell использует закрытый ключ из локального хранилища сертификатов для запуска проверки подлинности и получения маркеров доступа для вызова API Microsoft, таких как Microsoft Graph.
Приложение также можно запускать с другого компьютера, например в службе автоматизации Azure. В этом сценарии вы экспортируете пару открытых и закрытых ключей из локального хранилища сертификатов, отправьте открытый ключ в портал Azure и закрытый ключ (PFX-файл) в служба автоматизации Azure. Приложение, работающее в служба автоматизации Azure, будет использовать закрытый ключ для запуска проверки подлинности и получения маркеров доступа для вызова API Microsoft, таких как Microsoft Graph.
В этой статье используются командлет PowerShell New-SelfSignedCertificate
для создания самозаверяющего сертификата и командлет Export-Certificate
для его экспорта в расположение, к которому легко получить доступ. Эти командлеты встроены в современные версии Windows (Windows 8.1 и более поздних версий, Windows Server 2012R2 и более поздних версий). Самозаверяющий сертификат будет иметь следующую конфигурацию.
- 2048-битный ключ. Несмотря на поддержку более длинных значений, для достижения оптимального сочетания безопасности и производительности настоятельно рекомендуется использовать 2048-битный размер.
- Использует алгоритм шифрования RSA. Идентификатор Microsoft Entra в настоящее время поддерживает только RSA.
- Сертификат подписывается с помощью хэш-алгоритма SHA256. Идентификатор Microsoft Entra также поддерживает сертификаты, подписанные алгоритмами хэширования SHA384 и SHA512.
- Сертификат действителен только один год.
- Сертификат поддерживается для проверки подлинности как клиента, так и сервера.
Чтобы настроить дату начала и окончания срока действия и другие свойства сертификата, см. раздел New-SelfSignedCertificate.
Создание и экспорт общедоступного сертификата
Используйте сертификат, созданный с помощью этого метода, для проверки подлинности из приложения, запущенного на компьютере. Например, проверка подлинности из PowerShell.
В командной строке PowerShell выполните следующую команду и оставьте сеанс консоли PowerShell открытым. Замените {certificateName}
на имя, которое вы хотите присвоить сертификату.
$certname = "{certificateName}" ## Replace {certificateName}
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
Переменная $cert
в предыдущей команде сохраняет сертификат в текущем сеансе и позволяет экспортировать его.
Следующая команда экспортирует сертификат в формате .cer . Вы также можете экспортировать его в других форматах, поддерживаемых в портал Azure включая PEM и CRT.
Export-Certificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.cer" ## Specify your preferred location
Теперь сертификат готов к отправке на портал Azure. После отправки извлеките отпечаток сертификата, который будет использоваться для проверки подлинности приложения.
(Необязательно). Экспорт общедоступного сертификата с помощью закрытого ключа
Если приложение будет работать с другого компьютера или облака, например служба автоматизации Azure, вам также потребуется закрытый ключ.
Следуя приведенным выше командам, создайте пароль для закрытого ключа сертификата и сохраните его в переменной. Замените {myPassword}
пароль, который вы хотите использовать для защиты закрытого ключа сертификата.
$mypwd = ConvertTo-SecureString -String "{myPassword}" -Force -AsPlainText ## Replace {myPassword}
Используя пароль, сохраненный в переменной $mypwd
, защитите и экспортируйте закрытый ключ с помощью команды;
Export-PfxCertificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.pfx" -Password $mypwd ## Specify your preferred location
Теперь сертификат (.cer файл) готов к отправке в портал Azure. Закрытый ключ (PFX-файл ) шифруется и не может быть прочитан другими сторонами. После отправки получите отпечаток сертификата, который можно использовать для проверки подлинности приложения.
Необязательная задача: удалите сертификат из хранилища ключей.
Вы можете удалить пару ключей из личного хранилища, выполнив следующую команду, чтобы получить отпечаток сертификата.
Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object Thumbprint, FriendlyName
Затем скопируйте отображаемый отпечаток и удалите с его помощью сертификат и его закрытый ключ.
Remove-Item -Path Cert:\CurrentUser\My\{pasteTheCertificateThumbprintHere} -DeleteKey
Получение сведений о дате истечения срока действия сертификата
Самозаверяющий сертификат, созданный путем выполнения описанных выше действий, имеет ограниченное время существования. Дата окончания срока действия сертификата отображается на экране Сертификаты и секреты в разделе Регистрация приложений на портале Azure. Если вы используете службу автоматизации Azure, дата окончания срока действия сертификата отображается на экране Сертификаты в учетной записи службы автоматизации. Выполните описанные выше действия, чтобы создать новый самозаверяющий сертификат.
Следующие шаги
Управление сертификатами для федеративного единого входа в Идентификатор Microsoft Entra