Sprawdzanie poprawności certyfikatów infrastruktury kluczy publicznych usługi Azure Stack Hub

Narzędzie do sprawdzania gotowości usługi Azure Stack Hub opisane w tym artykule jest dostępne w Galeria programu PowerShell. Użyj narzędzia , aby sprawdzić, czy wygenerowane certyfikaty infrastruktury kluczy publicznych (PKI) są odpowiednie do przed wdrożeniem. Zweryfikuj certyfikaty, pozostawiając wystarczająco dużo czasu na przetestowanie i ponowne wystawianie certyfikatów w razie potrzeby.

Narzędzie sprawdzania gotowości przeprowadza następujące weryfikacje certyfikatów:

  • Analizowanie pliku PFX
    Sprawdza prawidłowy plik PFX, poprawne hasło i czy informacje publiczne są chronione hasłem.
  • Data wygaśnięcia
    Sprawdza minimalną ważność wynoszącą siedem dni.
  • Algorytm podpisu
    Sprawdza, czy algorytm podpisu nie jest algorytmem SHA1.
  • Klucz prywatny
    Sprawdza, czy klucz prywatny jest obecny i jest eksportowany z atrybutem komputera lokalnego.
  • Łańcuch certyfikatów
    Sprawdza, czy łańcuch certyfikatów jest nienaruszony, w tym sprawdzanie certyfikatów z podpisem własnym.
  • Nazwy DNS
    Sprawdza, czy sieć SAN zawiera odpowiednie nazwy DNS dla każdego punktu końcowego lub czy jest obecny pomocniczy symbol wieloznaczny.
  • Użycie klucza
    Sprawdza, czy użycie klucza zawiera podpis cyfrowy i szyfrowanie kluczy oraz sprawdza, czy rozszerzone użycie klucza zawiera uwierzytelnianie serwera i uwierzytelnianie klienta.
  • Rozmiar klucza
    Sprawdza, czy rozmiar klucza to 2048 lub większy.
  • Kolejność łańcucha
    Sprawdza kolejność innych certyfikatów, sprawdzając, czy kolejność jest poprawna.
  • Inne certyfikaty
    Upewnij się, że żadne inne certyfikaty nie zostały spakowane w formacie PFX innym niż odpowiedni certyfikat liścia i jego łańcuch.

Ważne

Certyfikat PKI jest plikiem PFX, a hasło powinno być traktowane jako informacje poufne.

Wymagania wstępne

System powinien spełniać następujące wymagania wstępne przed zweryfikowaniem certyfikatów PKI dla wdrożenia usługi Azure Stack Hub:

  • Narzędzie sprawdzania gotowości usługi Microsoft Azure Stack Hub.
  • Certyfikaty SSL wyeksportowane zgodnie z instrukcjami przygotowywania.
  • DeploymentData.json.
  • Windows 10 lub Windows Server 2016.

Sprawdzanie poprawności certyfikatu usług podstawowych

Wykonaj następujące kroki, aby zweryfikować certyfikaty infrastruktury kluczy publicznych usługi Azure Stack Hub pod kątem wdrażania i rotacji wpisów tajnych:

  1. Zainstaluj narzędzie AzsReadinessChecker z poziomu wiersza polecenia programu PowerShell (5.1 lub nowszego), uruchamiając następujące polecenie cmdlet:

    Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. Utwórz strukturę katalogów certyfikatów. W poniższym przykładzie możesz zmienić <C:\Certificates\Deployment> wybraną ścieżkę katalogu na nową.

    New-Item C:\Certificates\Deployment -ItemType Directory
    
    $directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
    
    $destination = 'C:\Certificates\Deployment'
    
    $directories | % { New-Item -Path (Join-Path $destination $PSITEM) -ItemType Directory -Force}
    

    Uwaga

    Usługi AD FS i graf są wymagane, jeśli używasz usług AD FS jako systemu tożsamości. Na przykład:

    $directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'ADFS', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'Graph', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
    
    • Umieść certyfikaty w odpowiednich katalogach utworzonych w poprzednim kroku. Na przykład:
      • C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
      • C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
      • C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
  3. W oknie programu PowerShell zmień wartości RegionNamei FQDNIdentitySystem odpowiednie dla środowiska usługi Azure Stack Hub i uruchom następujące polecenie cmdlet:

    $pfxPassword = Read-Host -Prompt "Enter PFX Password" -AsSecureString 
    Invoke-AzsHubDeploymentCertificateValidation -CertificatePath C:\Certificates\Deployment -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com -IdentitySystem AAD  
    
  4. Sprawdź dane wyjściowe i upewnij się, że wszystkie certyfikaty przechodzą wszystkie testy. Na przykład:

    Invoke-AzsHubDeploymentCertificateValidation v1.2005.1286.272 started.
    Testing: KeyVaultInternal\KeyVaultInternal.pfx
    Thumbprint: E86699****************************4617D6
        PFX Encryption: OK
        Expiry Date: OK
        Signature Algorithm: OK
        DNS Names: OK
        Key Usage: OK
        Key Length: OK
        Parse PFX: OK
        Private Key: OK
        Cert Chain: OK
        Chain Order: OK
        Other Certificates: OK
    Testing: ARM Public\ARMPublic.pfx
    Thumbprint: 8DC4D9****************************69DBAA
        PFX Encryption: OK
        Expiry Date: OK
        Signature Algorithm: OK
        DNS Names: OK
        Key Usage: OK
        Key Length: OK
        Parse PFX: OK
        Private Key: OK
        Cert Chain: OK
        Chain Order: OK
        Other Certificates: OK
    Testing: Admin Portal\AdminPortal.pfx
    Thumbprint: 6F9055****************************4AC0EA
        PFX Encryption: OK
        Expiry Date: OK
        Signature Algorithm: OK
        DNS Names: OK
        Key Usage: OK
        Key Length: OK
        Parse PFX: OK
        Private Key: OK
        Cert Chain: OK
        Chain Order: OK
        Other Certificates: OK
    Testing: Public Portal\PublicPortal.pfx
    
    
    Log location (contains PII): C:\Users\[*redacted*]\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessChecker.log
    Report location (contains PII): C:\Users\[*redacted*]\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessCheckerReport.json
    Invoke-AzsHubDeploymentCertificateValidation Completed
    

    Aby zweryfikować certyfikaty dla innych usług Azure Stack Hub, zmień wartość parametru -CertificatePath. Na przykład:

    # App Services
    Invoke-AzsHubAppServicesCertificateValidation -CertificatePath C:\Certificates\AppServices -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com
    
    # DBAdapter
    Invoke-AzsHubDBAdapterCertificateValidation -CertificatePath C:\Certificates\DBAdapter -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com
    
    # EventHubs
    Invoke-AzsHubEventHubsCertificateValidation -CertificatePath C:\Certificates\EventHubs -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com
    

    Każdy folder powinien zawierać jeden plik PFX dla typu certyfikatu. Jeśli typ certyfikatu ma wymagania dotyczące wielu certyfikatów, zagnieżdżone foldery dla każdego certyfikatu są oczekiwane i wrażliwe na nazwy. Poniższy kod przedstawia przykładową strukturę folderów/certyfikatów dla wszystkich typów certyfikatów oraz odpowiednią wartość dla elementu -CertificatePath.

    C:\>tree c:\SecretStore /A /F
        Folder PATH listing
        Volume serial number is 85AE-DF2E
        C:\SECRETSTORE
        \---AzureStack
            +---CertificateRequests
            \---Certificates
                +---AppServices         # Invoke-AzsCertificateValidation `
                |   +---API             # -CertificatePath C:\Certificates\AppServices
                |   |       api.pfx     
                |   |
                |   +---DefaultDomain
                |   |       wappsvc.pfx
                |   |
                |   +---Identity
                |   |       sso.pfx
                |   |
                |   \---Publishing
                |           ftp.pfx
                |
                +---DBAdapter           # Invoke-AzsCertificateValidation `
                |       dbadapter.pfx   # -CertificatePath C:\Certificates\DBAdapter
                |                       
                |
                +---Deployment          # Invoke-AzsCertificateValidation `
                |   +---ACSBlob         # -CertificatePath C:\Certificates\Deployment
                |   |       acsblob.pfx 
                |   |
                |   +---ACSQueue
                |   |       acsqueue.pfx
               ./. ./. ./. ./. ./. ./. ./.    <- Deployment certificate tree trimmed.
                |   \---Public Portal
                |           portal.pfx
                |
                \---EventHubs           # Invoke-AzsCertificateValidation `
                        eventhubs.pfx   # -CertificatePath C:\Certificates\EventHubs
    
    

Znane problemy

Objaw: Testy są pomijane

Przyczyna: AzsReadinessChecker pomija niektóre testy, jeśli zależność nie jest spełnina:

  • Inne certyfikaty są pomijane, jeśli łańcuch certyfikatów zakończy się niepowodzeniem.

    Testing: ACSBlob\singlewildcard.pfx
         Read PFX: OK
         Signature Algorithm: OK
         Private Key: OK
         Cert Chain: OK
         DNS Names: Fail
         Key Usage: OK
         Key Size: OK
         Chain Order: OK
         Other Certificates: Skipped
    Details:
    The certificate records '*.east.azurestack.contoso.com' do not contain a record that is valid for '*.blob.east.azurestack.contoso.com'. Please refer to the documentation for how to create the required certificate file.
    The other certificates check was skipped because cert chain and/or DNS names failed. Follow the guidance to remediate those issues and recheck. 
    
    Log location (contains PII): C:\Users\username\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessChecker.log
    Report location (contains PII): C:\Users\username\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessCheckerReport.json
    Invoke-AzsCertificateValidation Completed
    

Rozwiązanie: postępuj zgodnie ze wskazówkami narzędzia w sekcji szczegółów w każdym zestawie testów dla każdego certyfikatu.

Objaw: Sprawdzanie listy CRL PROTOKOŁU HTTP kończy się niepowodzeniem, mimo że protokół HTTP CDP został zapisany w rozszerzeniach x509.

Przyczyna: Obecnie narzędzie AzsReadinessChecker nie może sprawdzić pod kątem ciągłego wdrażania protokołu HTTP w niektórych językach.

Rozwiązanie: Uruchom walidację z językiem systemu operacyjnego ustawionym na EN-US.

Certyfikaty

Directory Certyfikat
ACSBlob wildcard_blob_<region>_<externalFQDN>
ACSQueue wildcard_queue_<region>_<externalFQDN>
ACSTable wildcard_table_<region>_<externalFQDN>
Host rozszerzenia Administracja wildcard_adminhosting_<region>_<externalFQDN>
Portal administracyjny adminportal_<region>_<externalFQDN>
Administracja USŁUGI ARM adminmanagement_<region>_<externalFQDN>
Publiczna usługa ARM management_<region>_<externalFQDN>
KeyVault wildcard_vault_<region>_<externalFQDN>
KeyVaultInternal wildcard_adminvault_<region>_<externalFQDN>
Host rozszerzenia publicznego wildcard_hosting_<region>_<externalFQDN>
Portal publiczny portal_<region>_<externalFQDN>

Następne kroki

Po zweryfikowaniu certyfikatów przez narzędzie AzsReadinessChecker możesz używać ich do wdrażania usługi Azure Stack Hub lub rotacji wpisów tajnych po wdrożeniu.