Поделиться через


Создайте самозаверяющий открытый сертификат для проверки подлинности приложения.

Идентификатор 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