PKI-certificaten van Azure Stack Hub valideren

Het hulpprogramma Gereedheidscontrole van Azure Stack Hub dat in dit artikel wordt beschreven, is beschikbaar in de PowerShell Gallery. Gebruik het hulpprogramma om te controleren of gegenereerde PKI-certificaten (Public Key Infrastructure) geschikt zijn voor pre-implementatie. Valideer certificaten door voldoende tijd over te laten om certificaten te testen en opnieuw uit te geven, indien nodig.

Het hulpprogramma Gereedheidscontrole voert de volgende certificaatvalidaties uit:

  • PFX parseren
    Controleert op een geldig PFX-bestand, het juiste wachtwoord en of de openbare informatie wordt beveiligd door het wachtwoord.
  • Vervaldatum
    Controleert op de minimale geldigheidsduur van zeven dagen.
  • Handtekening-algoritme
    Controleert of het handtekeningalgoritme niet SHA1 is.
  • Persoonlijke sleutel
    Controleert of de persoonlijke sleutel aanwezig is en wordt geëxporteerd met het kenmerk lokale computer.
  • Certificaatketen
    Controleert of de certificaatketen intact is, inclusief een controle op zelfondertekende certificaten.
  • DNS-namen
    Controleert of het SAN relevante DNS-namen bevat voor elk eindpunt of of er een ondersteunend jokerteken aanwezig is.
  • Sleutelgebruik
    Controleert of het sleutelgebruik een digitale handtekening en sleutelcodering bevat en controleert of uitgebreid sleutelgebruik serververificatie en clientverificatie bevat.
  • Sleutelgrootte
    Controleert of de sleutelgrootte 2048 of groter is.
  • Ketenvolgorde
    Controleert de volgorde van de andere certificaten en controleert of de volgorde juist is.
  • Andere certificaten
    Zorg ervoor dat er geen andere certificaten in PFX zijn verpakt dan het relevante leaf-certificaat en de bijbehorende keten.

Belangrijk

Het PKI-certificaat is een PFX-bestand en het wachtwoord moet worden behandeld als gevoelige informatie.

Vereisten

Uw systeem moet voldoen aan de volgende vereisten voordat u PKI-certificaten valideert voor een Azure Stack Hub-implementatie:

  • Microsoft Azure Stack Hub-gereedheidscontrole.
  • SSL-certificaat(en) geëxporteerd volgens de voorbereidingsinstructies.
  • DeploymentData.json.
  • Windows 10 of Windows Server 2016.

Validatie uitvoeren van coreservicecertificaten

Gebruik deze stappen om de PKI-certificaten van Azure Stack Hub te valideren voor implementatie en rotatie van geheimen:

  1. Installeer AzsReadinessChecker vanaf een PowerShell-prompt (5.1 of hoger) door de volgende cmdlet uit te voeren:

    Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. Maak de structuur van de certificaatmap. In het onderstaande voorbeeld kunt u een nieuw mappad naar keuze gebruiken <C:\Certificates\Deployment> .

    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}
    

    Notitie

    AD FS en Graph zijn vereist als u AD FS als uw identiteitssysteem gebruikt. Bijvoorbeeld:

    $directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'ADFS', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'Graph', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
    
    • Plaats uw certificaat(en) in de juiste mappen die u in de vorige stap hebt gemaakt. Bijvoorbeeld:
      • C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
      • C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
      • C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
  3. Wijzig in het PowerShell-venster de waarden van RegionNameen FQDNIdentitySystem die geschikt zijn voor de Azure Stack Hub-omgeving en voer de volgende cmdlet uit:

    $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. Controleer de uitvoer en zorg ervoor dat alle certificaten alle tests doorstaan. Bijvoorbeeld:

    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
    

    Als u certificaten voor andere Azure Stack Hub-services wilt valideren, wijzigt u de waarde voor -CertificatePath. Bijvoorbeeld:

    # 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
    

    Elke map moet één PFX-bestand voor het certificaattype bevatten. Als voor een certificaattype vereisten voor meerdere certificaten gelden, worden geneste mappen voor elk afzonderlijk certificaat verwacht en zijn ze naamgevoelig. In de volgende code ziet u een voorbeeld van een map/certificaatstructuur voor alle certificaattypen en de juiste waarde voor -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
    
    

Bekende problemen

Symptoom: tests worden overgeslagen

Oorzaak: AzsReadinessChecker slaat bepaalde tests over als niet aan een afhankelijkheid wordt voldaan:

  • Andere certificaten worden overgeslagen als de certificaatketen mislukt.

    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
    

Oplossing: volg de richtlijnen van het hulpprogramma in de sectie details onder elke set tests voor elk certificaat.

Symptoom: HTTP CRL-controle mislukt ondanks dat er een HTTP CDP is geschreven naar x509-extensies.

Oorzaak: Momenteel kan de AzsReadinessChecker in sommige talen niet controleren op HTTP CDP.

Oplossing: voer validatie uit met de taal van het besturingssysteem ingesteld op EN-US.

Certificaten

Directory Certificaat
ACSBlob wildcard_blob_<region>_<externalFQDN>
ACSQueue wildcard_queue_<region>_<externalFQDN>
ACSTable wildcard_table_<region>_<externalFQDN>
Beheer-extensiehost wildcard_adminhosting_<region>_<externalFQDN>
Beheerportal adminportal_<region>_<externalFQDN>
ARM-Beheer adminmanagement_<region>_<externalFQDN>
OPENBARE ARM management_<region>_<externalFQDN>
KeyVault wildcard_vault_<region>_<externalFQDN>
KeyVaultInternal wildcard_adminvault_<region>_<externalFQDN>
Host van openbare extensie wildcard_hosting_<region>_<externalFQDN>
Openbare portal portal_<region>_<externalFQDN>

Volgende stappen

Zodra uw certificaten zijn gevalideerd door AzsReadinessChecker, bent u klaar om ze te gebruiken voor azure Stack Hub-implementatie of roulatie van geheimen na de implementatie.