Udostępnij za pośrednictwem


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