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:
Installare AzsReadinessChecker da un prompt di PowerShell (5.1 o versione successiva) eseguendo il cmdlet seguente:
Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
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
- Inserire i certificati nelle directory appropriate create nel passaggio precedente. Ad esempio:
Nella finestra di PowerShell modificare i valori di
RegionName
FQDN
eIdentitySystem
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
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.
- Per la distribuzione, trasferire in modo sicuro i certificati al tecnico della distribuzione in modo che possano copiarli nell'host della macchina virtuale di distribuzione come specificato nei requisiti PKI dell'hub di Azure Stack - Certificati obbligatori.
- Per la rotazione dei segreti, vedere Ruotare i segreti nell'hub di Azure Stack. La rotazione dei certificati del provider di risorse aggiunti a valore è descritta nella sezione Ruotare i segreti esterni.