Partager via


Valider des certificats PKI Azure Stack Hub

L’outil Azure Stack Hub Readiness Checker décrit dans cet article est disponible à partir de PowerShell Gallery. Utilisez cet outil pour vérifier que les certificats PKI générés sont adaptés au prédéploiement. Validez les certificats en gardant suffisamment de temps pour tester et réémettre les certificats si nécessaire.

L’outil Readiness Checker effectue les validations de certificat suivantes :

  • Analyser PFX
    Vérifie si le fichier PFX est valide, si le mot de passe est correct et si les informations publiques sont protégées par le mot de passe.
  • Date d’expiration
    Vérifie la validité minimale de 7 jours.
  • Algorithme de signature
    Vérifie que l’algorithme de signature n’est pas SHA1 (Secure Hash Algorithm 1).
  • Clé privée
    Vérifie que la clé privée est présente et qu’elle est exportée avec l’attribut d’ordinateur local.
  • Chaîne d’approbation
    Vérifie que la chaîne d’approbation est intacte, y compris pour les certificats auto-signés.
  • Noms DNS
    Vérifie que le réseau SAN contient les noms DNS appropriés pour chaque point de terminaison ou si un caractère générique de prise en charge est présent.
  • Syntaxe de la clé
    Vérifie que la syntaxe de la clé contient une signature numérique et un chiffrement de clé, et vérifie que la syntaxe avancée de la clé contient l’authentification du serveur et l’authentification du client.
  • Taille de la clé
    Vérifie que la taille de clé est au moins égale à 2 048 octets.
  • Ordre de la chaîne
    Vérifie l’ordre des autres certificats afin de garantir que l’ordre est correct.
  • Autres certificats
    Assurez-vous qu’aucun autre certificat n’a été packagé dans le PFX, à part le certificat feuille pertinent et sa chaîne.

Important

Le certificat PKI est un fichier PFX et le mot de passe doit être considéré comme une information sensible.

Prérequis

Votre système doit respecter la configuration requise ci-après afin de permettre la validation des certificats PKI pour un déploiement Azure Stack Hub :

  • Outil Microsoft Azure Stack Hub Readiness Checker.
  • Certificats SSL exportés conformément aux instructions de préparation.
  • DeploymentData.json.
  • Windows 10 ou Windows Server 2016

Effectuer la validation principale des certificats de service

Suivez les étapes ci-après afin de valider les certificats PKI Azure Stack Hub pour un déploiement et une rotation des secrets :

  1. Installez AzsReadinessChecker à partir d’une invite PowerShell (5.1 ou ultérieur) en exécutant l’applet de commande suivante :

    Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. Créez la structure de répertoires de certificat. Dans l’exemple ci-après, vous pouvez remplacer <C:\Certificates\Deployment> par un nouveau chemin d’accès de répertoire de votre choix.

    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}
    

    Remarque

    AD FS et Graph sont obligatoires si vous utilisez AD FS comme système d’identité. Par exemple :

    $directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'ADFS', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'Graph', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
    
    • Placez vos certificats dans les répertoires appropriés créés à l’étape précédente. Par exemple :
      • C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
      • C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
      • C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
  3. Dans la fenêtre PowerShell, changez les valeurs de RegionName, FQDN et IdentitySystem en fonction de l’environnement Azure Stack Hub, puis exécutez l’applet de commande suivante :

    $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. Vérifiez la sortie pour être sûr que tous les certificats ont réussi l’intégralité des tests. Par exemple :

    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
    

    Pour valider les certificats d’autres services Azure Stack Hub, changez la valeur de -CertificatePath. Par exemple :

    # 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
    

    Chaque dossier doit contenir un fichier PFX pour le type de certificat. Si un type de certificat a des exigences multicertificats, des dossiers imbriqués sont attendus pour chaque certificat avec un nom approprié. Le code suivant montre un exemple de structure de dossier/certificat pour tous les types de certificats, ainsi que la valeur appropriée pour -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
    
    

Problèmes connus

Symptôme : les tests sont ignorés.

Cause : AzsReadinessChecker ignore certains tests si aucune dépendance n’est détectée :

  • Si la chaîne d’approbation échoue, les autres certificats sont ignorés.

    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
    

Résolution : suivez les instructions de l’outil dans la section des détails sous chaque ensemble de tests de chacun des certificats.

Symptôme : La vérification de la liste de révocation de certificats HTTP échoue malgré l’écriture d’un CDP HTTP dans les extensions x509.

Cause : Actuellement, AzsReadinessChecker ne peut pas case activée pour http CDP dans certains langages.

Résolution : Exécutez une validation avec la langue du système d’exploitation définie à EN-US.

Certificats

Répertoire Certificat
ACSBlob wildcard_blob_<region>_<externalFQDN>
ACSQueue wildcard_queue_<region>_<externalFQDN>
ACSTable wildcard_table_<region>_<externalFQDN>
Hôte d’extension d’administration wildcard_adminhosting_<region>_<externalFQDN>
Portail d’administration adminportal_<region>_<externalFQDN>
Administrateur ARM adminmanagement_<region>_<externalFQDN>
ARM Public management_<region>_<externalFQDN>
KeyVault wildcard_vault_<region>_<externalFQDN>
KeyVaultInternal wildcard_adminvault_<region>_<externalFQDN>
Hôte d’extension public wildcard_hosting_<region>_<externalFQDN>
Portail public portal_<region>_<externalFQDN>

Étapes suivantes

Une fois vos certificats validés par AzsReadinessChecker, vous pouvez les utiliser dans votre déploiement Azure Stack Hub ou pour la rotation des secrets post-déploiement.