Tworzenie certyfikatu publicznego z podpisem własnym w celu uwierzytelniania aplikacji
Identyfikator Entra firmy Microsoft obsługuje dwa typy uwierzytelniania dla jednostek usługi: uwierzytelnianie oparte na hasłach (klucz tajny aplikacji) i uwierzytelnianie oparte na certyfikatach. Wpisy tajne aplikacji można łatwo utworzyć w witrynie Azure Portal lub przy użyciu interfejsu API firmy Microsoft, takiego jak Microsoft Graph, ale nie są one tak bezpieczne, jak certyfikaty. Dlatego zaleca się, aby aplikacja używała certyfikatu, a nie wpisu tajnego.
Do testowania można użyć certyfikatu publicznego z podpisem własnym zamiast certyfikatu z podpisem urzędu certyfikacji. W tym przewodniku użyjesz programu PowerShell do utworzenia i wyeksportowania certyfikatu z podpisem własnym.
Uwaga
Certyfikaty z podpisem własnym to certyfikaty cyfrowe, które nie są podpisane przez zaufany urząd certyfikacji innej firmy. Certyfikaty z podpisem własnym są tworzone, wystawiane i podpisane przez firmę lub dewelopera, który jest odpowiedzialny za podpisaną witrynę internetową lub oprogramowanie. Dlatego certyfikaty z podpisem własnym są uważane za niebezpieczne dla publicznych witryn internetowych i aplikacji.
Podczas tworzenia certyfikatu przy użyciu programu PowerShell można określić parametry, takie jak algorytmy kryptograficzne i algorytmy skrótu, okres ważności certyfikatu i nazwa domeny. Certyfikat można następnie wyeksportować z kluczem prywatnym lub bez go w zależności od potrzeb aplikacji.
Aplikacja, która inicjuje sesję uwierzytelniania, wymaga klucza prywatnego, podczas gdy aplikacja, która potwierdza, że uwierzytelnianie wymaga klucza publicznego. Jeśli więc uwierzytelniasz się z aplikacji klasycznej programu PowerShell do identyfikatora Entra firmy Microsoft, wyeksportujesz tylko klucz publiczny (plik .cer ) i przekażesz go do witryny Azure Portal. Aplikacja PowerShell używa klucza prywatnego z lokalnego magazynu certyfikatów do inicjowania uwierzytelniania i uzyskiwania tokenów dostępu do wywoływania interfejsów API firmy Microsoft, takich jak Microsoft Graph.
Aplikacja może być również uruchomiona z innej maszyny, takiej jak usługa Azure Automation. W tym scenariuszu należy wyeksportować parę kluczy publicznych i prywatnych z lokalnego magazynu certyfikatów, przekazać klucz publiczny do witryny Azure Portal oraz klucz prywatny ( plik PFX ) do usługi Azure Automation. Aplikacja działająca w usłudze Azure Automation będzie używać klucza prywatnego do inicjowania uwierzytelniania i uzyskiwania tokenów dostępu do wywoływania interfejsów API firmy Microsoft, takich jak Microsoft Graph.
W tym artykule użyto New-SelfSignedCertificate
polecenia cmdlet programu PowerShell do utworzenia certyfikatu z podpisem własnym i Export-Certificate
polecenia cmdlet w celu wyeksportowania go do lokalizacji, która jest łatwo dostępna. Te polecenia cmdlet są wbudowane w nowoczesne wersje systemu Windows (Windows 8.1 i nowsze oraz Windows Server 2012R2 i nowsze). Certyfikat z podpisem własnym będzie miał następującą konfigurację:
- Długość klucza 2048-bitowego. Chociaż obsługiwane są dłuższe wartości, rozmiar 2048-bitowy jest zdecydowanie zalecany w celu uzyskania najlepszej kombinacji zabezpieczeń i wydajności.
- Używa algorytmu kryptograficznego RSA. Identyfikator Entra firmy Microsoft obecnie obsługuje tylko rsa.
- Certyfikat jest podpisany przy użyciu algorytmu wyznaczania skrótu SHA256. Identyfikator Entra firmy Microsoft obsługuje również certyfikaty podpisane przy użyciu algorytmów wyznaczania wartości skrótu SHA384 i SHA512.
- Certyfikat jest ważny tylko przez jeden rok.
- Certyfikat jest obsługiwany do użycia zarówno w przypadku uwierzytelniania klienta, jak i serwera.
Aby dostosować datę rozpoczęcia i wygaśnięcia oraz inne właściwości certyfikatu, zobacz New-SelfSignedCertificate.
Tworzenie i eksportowanie certyfikatu publicznego
Użyj certyfikatu utworzonego przy użyciu tej metody, aby uwierzytelnić się z poziomu aplikacji uruchomionej na komputerze. Na przykład uwierzytelnij się za pomocą programu PowerShell.
W wierszu polecenia programu PowerShell uruchom następujące polecenie i pozostaw otwartą sesję konsoli programu PowerShell. Zastąp {certificateName}
ciąg nazwą, którą chcesz nadać certyfikatowi.
$certname = "{certificateName}" ## Replace {certificateName}
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
Zmienna $cert
w poprzednim poleceniu przechowuje certyfikat w bieżącej sesji i umożliwia jego wyeksportowanie.
Poniższe polecenie eksportuje certyfikat w formacie .cer . Można go również wyeksportować w innych formatach obsługiwanych w witrynie Azure Portal, w tym pem i crt.
Export-Certificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.cer" ## Specify your preferred location
Certyfikat jest teraz gotowy do przekazania do witryny Azure Portal. Po przekazaniu pobierz odcisk palca certyfikatu do użycia do uwierzytelniania aplikacji.
(Opcjonalnie): wyeksportuj certyfikat publiczny przy użyciu klucza prywatnego
Jeśli aplikacja będzie działać z innej maszyny lub chmury, takiej jak usługa Azure Automation, musisz również mieć klucz prywatny.
Po wykonaniu poprzednich poleceń utwórz hasło dla klucza prywatnego certyfikatu i zapisz je w zmiennej. Zastąp {myPassword}
ciąg hasłem, którego chcesz użyć do ochrony klucza prywatnego certyfikatu.
$mypwd = ConvertTo-SecureString -String "{myPassword}" -Force -AsPlainText ## Replace {myPassword}
Używając hasła przechowywanego w zmiennej $mypwd
, zabezpiecz i wyeksportuj klucz prywatny przy użyciu polecenia ;
Export-PfxCertificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.pfx" -Password $mypwd ## Specify your preferred location
Certyfikat (plik .cer ) jest teraz gotowy do przekazania do witryny Azure Portal. Klucz prywatny (plik pfx ) jest szyfrowany i nie można go odczytać przez inne strony. Po przekazaniu pobierz odcisk palca certyfikatu, którego można użyć do uwierzytelniania aplikacji.
Opcjonalne zadanie: Usuń certyfikat z magazynu kluczy.
Parę kluczy można usunąć z magazynu osobistego, uruchamiając następujące polecenie, aby pobrać odcisk palca certyfikatu.
Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object Thumbprint, FriendlyName
Następnie skopiuj wyświetlany odcisk palca i użyj go do usunięcia certyfikatu i jego klucza prywatnego.
Remove-Item -Path Cert:\CurrentUser\My\{pasteTheCertificateThumbprintHere} -DeleteKey
Znajomość daty wygaśnięcia certyfikatu
Certyfikat z podpisem własnym utworzony zgodnie z powyższymi krokami ma ograniczony okres istnienia przed jego wygaśnięciem. W sekcji Rejestracje aplikacji witryny Azure Portal ekran Certyfikaty i wpisy tajne wyświetla datę wygaśnięcia certyfikatu. Jeśli używasz usługi Azure Automation, na ekranie Certyfikaty na koncie usługi Automation jest wyświetlana data wygaśnięcia certyfikatu. Wykonaj poprzednie kroki, aby utworzyć nowy certyfikat z podpisem własnym.
Następne kroki
Zarządzanie certyfikatami dla federacyjnego logowania jednokrotnego w usłudze Microsoft Entra ID