Verifiera Azure Stack Hub PKI-certifikat

Verktyget Beredskapskontroll för Azure Stack Hub som beskrivs i den här artikeln är tillgängligt från PowerShell-galleriet. Använd verktyget för att verifiera att genererade PKI-certifikat (Public Key Infrastructure) är lämpliga för fördistribution. Verifiera certifikaten genom att lämna tillräckligt med tid för att testa och utfärda certifikat på nytt om det behövs.

Verktyget Beredskapskontroll utför följande certifikatvalidering:

  • Parsa PFX
    Söker efter en giltig PFX-fil, rätt lösenord och om den offentliga informationen skyddas av lösenordet.
  • Utgångsdatum
    Söker efter minsta giltighet på sju dagar.
  • Signaturalgoritm
    Kontrollerar att signaturalgoritmen inte är SHA1.
  • Privat nyckel
    Kontrollerar att den privata nyckeln finns och exporteras med det lokala datorattributet.
  • Certifikatkedja
    Kontrollerar att certifikatkedjan är intakt, inklusive en kontroll av självsignerade certifikat.
  • DNS-namn
    Kontrollerar att SAN innehåller relevanta DNS-namn för varje slutpunkt eller om det finns ett stöd för jokertecken.
  • Nyckelanvändning
    Kontrollerar om nyckelanvändningen innehåller en digital signatur och nyckelchiffrering och kontrollerar om förbättrad nyckelanvändning innehåller serverautentisering och klientautentisering.
  • Nyckelstorlek
    Kontrollerar om nyckelstorleken är 2048 eller större.
  • Kedjeordning
    Kontrollerar ordningen på de andra certifikaten som verifierar att ordern är korrekt.
  • Andra certifikat
    Se till att inga andra certifikat har paketerats i PFX förutom det relevanta lövcertifikatet och dess kedja.

Viktigt

PKI-certifikatet är en PFX-fil och lösenordet ska behandlas som känslig information.

Förutsättningar

Systemet bör uppfylla följande krav innan PKI-certifikat verifieras för en Azure Stack Hub-distribution:

  • Beredskapskontroll för Microsoft Azure Stack Hub.
  • SSL-certifikat som exporteras enligt förberedelseinstruktionerna.
  • DeploymentData.json.
  • Windows 10 eller Windows Server 2016.

Utför certifikatsverifiering för kärntjänster

Använd de här stegen för att verifiera Azure Stack Hub PKI-certifikaten för distribution och hemlig rotation:

  1. Installera AzsReadinessChecker från en PowerShell-prompt (5.1 eller senare) genom att köra följande cmdlet:

    Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. Skapa certifikatkatalogstrukturen. I exemplet nedan kan du ändra <C:\Certificates\Deployment> till en ny katalogsökväg.

    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}
    

    Anteckning

    AD FS och Graph krävs om du använder AD FS som identitetssystem. Exempel:

    $directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'ADFS', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'Graph', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
    
    • Placera dina certifikat i lämpliga kataloger som skapades i föregående steg. Exempel:
      • C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
      • C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
      • C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
  3. I PowerShell-fönstret ändrar du värdena RegionNameför och FQDNIdentitySystem är lämpliga för Azure Stack Hub-miljön och kör följande 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. Kontrollera utdata och se till att alla certifikat klarar alla tester. Exempel:

    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
    

    Om du vill verifiera certifikat för andra Azure Stack Hub-tjänster ändrar du värdet för -CertificatePath. Exempel:

    # 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
    

    Varje mapp ska innehålla en enda PFX-fil för certifikattypen. Om en certifikattyp har krav på flera certifikat förväntas kapslade mappar för varje enskilt certifikat och namnkänsliga. Följande kod visar en exempelmapp/certifikatstruktur för alla certifikattyper och lämpligt värde för -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
    
    

Kända problem

Symptom: Tester hoppas över

Orsak: AzsReadinessChecker hoppar över vissa tester om ett beroende inte uppfylls:

  • Andra certifikat hoppas över om certifikatkedjan misslyckas.

    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
    

Lösning: Följ verktygets vägledning i informationsavsnittet under varje uppsättning tester för varje certifikat.

Symptom: HTTP CRL-kontrollen misslyckas trots att en HTTP CDP har skrivits till x509-tillägg.

Orsak: AzsReadinessChecker kan för närvarande inte söka efter HTTP CDP på vissa språk.

Lösning: Kör validering med OS-språket inställt på EN-US.

Certifikat

Katalog Certifikat
ACSBlob wildcard_blob_<region>_<externalFQDN>
ACSQueue wildcard_queue_<region>_<externalFQDN>
ACSTable wildcard_table_<region>_<externalFQDN>
Admin-tilläggsvärd wildcard_adminhosting_<region>_<externalFQDN>
Administratörsportal adminportal_<region>_<externalFQDN>
ARM Admin adminmanagement_<region>_<externalFQDN>
OFFENTLIG ARM management_<region>_<externalFQDN>
KeyVault wildcard_vault_<region>_<externalFQDN>
KeyVaultInternal wildcard_adminvault_<region>_<externalFQDN>
Värd för offentligt tillägg wildcard_hosting_<region>_<externalFQDN>
Offentlig portal portal_<region>_<externalFQDN>

Nästa steg

När dina certifikat har verifierats av AzsReadinessChecker är du redo att använda dem för Azure Stack Hub-distribution eller hemlig rotation efter distributionen.