Convalidare i certificati PKI dell'hub di Azure Stack

Lo strumento Di verifica dell'idoneità dell'hub di Azure Stack descritto in questo articolo è disponibile nell'PowerShell Gallery. Usare lo strumento per verificare che i certificati PKI (Public Key Infrastructure) generati siano adatti per la pre-distribuzione. Convalidare i certificati lasciando il tempo sufficiente per testare e riemettere i certificati, se necessario.

Lo strumento Readiness Checker esegue le convalide del certificato seguenti:

  • Analizzare PFX
    Verifica la presenza di file PFX validi, password corretta e se le informazioni pubbliche sono protette dalla password.
  • Data di scadenza
    Verifica la validità minima di sette giorni.
  • Algoritmo di firma
    Verifica che l'algoritmo di firma non sia SHA1.
  • Chiave privata
    Verifica che la chiave privata sia presente ed esportata con l'attributo del computer locale.
  • Catena di certificati
    Verifica che la catena di certificati sia intatta, incluso un controllo per i certificati autofirmato.
  • Nomi DNS
    Controlla la san contiene nomi DNS pertinenti per ogni endpoint o se è presente un carattere jolly di supporto.
  • Uso delle chiavi
    Verifica se l'utilizzo della chiave contiene una firma digitale e una crittografia della chiave e controlla se l'utilizzo delle chiavi avanzato contiene l'autenticazione server e l'autenticazione client.
  • Dimensione chiavi
    Controlla se la dimensione della chiave è 2048 o superiore.
  • Ordine catena
    Controlla l'ordine degli altri certificati convalidando che l'ordine sia corretto.
  • Altri certificati
    Verificare che non siano stati inseriti altri certificati in PFX diversi dal certificato foglia pertinente e dalla relativa catena.

Importante

Il certificato PKI è un file PFX e la password devono essere considerate come informazioni riservate.

Prerequisiti

Il sistema deve soddisfare i prerequisiti seguenti prima di convalidare i certificati PKI per una distribuzione dell'hub di Azure Stack:

  • Rediness Schecker dell'hub di Azure Stack.
  • Certificati SSL esportati seguendo le istruzioni di preparazione.
  • DeploymentData.json.
  • Windows 10 o Windows Server 2016.

Eseguire la convalida del certificato dei servizi principali

Usare questi passaggi per convalidare i certificati PKI dell'hub di Azure Stack per la distribuzione e la rotazione dei segreti:

  1. Installare AzsReadinessChecker da un prompt di PowerShell (5.1 o versione successiva) eseguendo il cmdlet seguente:

    Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. Creare la struttura di directory del certificato. Nell'esempio seguente è possibile passare <C:\Certificates\Deployment> a un nuovo percorso di directory preferito.

    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}
    

    Nota

    AD FS e Graph sono necessari se si usa AD FS come sistema di identità. Ad esempio:

    $directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'ADFS', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'Graph', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
    
    • Inserire i certificati nelle directory appropriate create nel passaggio precedente. Ad esempio:
      • C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
      • C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
      • C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
  3. Nella finestra di PowerShell modificare i valori di RegionNameFQDN e IdentitySystem in base all'ambiente dell'hub di Azure Stack ed eseguire il cmdlet seguente:

    $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. Controllare l'output e assicurarsi che tutti i certificati superino tutti i test. Ad esempio:

    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
    

    Per convalidare i certificati per altri servizi dell'hub di Azure Stack, modificare il valore di -CertificatePath. Ad esempio:

    # 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
    

    Ogni cartella deve contenere un singolo file PFX per il tipo di certificato. Se un tipo di certificato ha requisiti per più certificati, le cartelle nidificate per ogni singolo certificato sono previste e sensibili ai nomi. Il codice seguente mostra una struttura di cartella/certificato di esempio per tutti i tipi di certificato e il valore appropriato per -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
    
    

Problemi noti

Sintomo: i test vengono ignorati

Causa: AzsReadinessChecker ignora determinati test se non viene soddisfatta una dipendenza:

  • Altri certificati vengono ignorati se la catena di certificati ha esito negativo.

    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
    

Soluzione: seguire le indicazioni dello strumento nella sezione dei dettagli in ogni set di test per ogni certificato.

Sintomo: il controllo CRL HTTP ha esito negativo nonostante la scrittura di un CDP HTTP nelle estensioni x509.

Causa: attualmente AzsReadinessChecker non è in grado di verificare la presenza di CDP HTTP in alcune lingue.

Soluzione: eseguire la convalida con la lingua del sistema operativo impostata su EN-US.

Certificati

Directory Certificato
ACSBlob wildcard_blob_<region>_<externalFQDN>
ACSQueue wildcard_queue_<region>_<externalFQDN>
ACSTable wildcard_table_<region>_<externalFQDN>
Host estensione amministrazione wildcard_adminhosting_<region>_<externalFQDN>
Portale di amministrazione adminportal_<region>_<externalFQDN>
Amministrazione ARM adminmanagement_<region>_<externalFQDN>
ARM Public management_<region>_<externalFQDN>
Insieme di credenziali delle chiavi wildcard_vault_<region>_<externalFQDN>
KeyVaultInternal wildcard_adminvault_<region>_<externalFQDN>
Host estensione pubblica wildcard_hosting_<region>_<externalFQDN>
Portale pubblico portal_<region>_<externalFQDN>

Passaggi successivi

Dopo aver convalidato i certificati da AzsReadinessChecker, è possibile usarli per la distribuzione dell'hub di Azure Stack o la rotazione dei segreti post-distribuzione.