Validar certificados PKI do Azure Stack Hub
A ferramenta Verificador de Preparação do Azure Stack Hub descrita neste artigo está disponível no Galeria do PowerShell. Utilize a ferramenta para validar se os certificados de infraestrutura de chaves públicas (PKI) gerados são adequados para pré-implementação. Valide os certificados ao deixar tempo suficiente para testar e reeditar certificados, se necessário.
A ferramenta Verificador de Preparação executa as seguintes validações de certificado:
-
Analisar PFX
Verifica se existe um ficheiro PFX válido, uma palavra-passe correta e se as informações públicas estão protegidas pela palavra-passe. -
Data de Expiração
Verifica a validade mínima de sete dias. -
Algoritmo de assinatura
Verifica se o algoritmo de assinatura não é SHA1. -
Chave Privada
Verifica se a chave privada está presente e é exportada com o atributo do computador local. -
Cadeia de certificados
Verifica se a cadeia de certificados está intacta, incluindo uma verificação de certificados autoassinados. -
Nomes DNS
Verifica se a SAN contém nomes DNS relevantes para cada ponto final ou se está presente um caráter universal de suporte. -
Utilização da chave
Verifica se a utilização da chave contém uma assinatura digital e uma cifragem de chaves e verifica se a utilização de chave melhorada contém autenticação de servidor e autenticação de cliente. -
Tamanho da chave
Verifica se o tamanho da chave é 2048 ou superior. -
Ordem em cadeia
Verifica a ordem dos outros certificados, validando que a encomenda está correta. -
Outros certificados
Certifique-se de que não foram empacotados outros certificados no PFX além do certificado de folha relevante e da respetiva cadeia.
Importante
O certificado PKI é um ficheiro PFX e a palavra-passe deve ser tratada como informações confidenciais.
O sistema deve cumprir os seguintes pré-requisitos antes de validar certificados PKI para uma implementação do Azure Stack Hub:
- Verificador de Preparação do Microsoft Azure Stack Hub.
- Certificados SSL exportados ao seguir as instruções de preparação.
- DeploymentData.json.
- Windows 10 ou Windows Server 2016.
Utilize estes passos para validar os certificados PKI do Azure Stack Hub para implementação e rotação de segredos:
Instale o AzsReadinessChecker a partir de uma linha de comandos do PowerShell (5.1 ou superior) ao executar o seguinte cmdlet:
Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
Crie a estrutura do diretório de certificados. No exemplo abaixo, pode alterar
<C:\Certificates\Deployment>
para um novo caminho de diretório à sua escolha.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
O AD FS e o Graph são necessários se estiver a utilizar o AD FS como o seu sistema de identidade. Por exemplo:
$directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'ADFS', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'Graph', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
- Coloque os certificados nos diretórios adequados criados no passo anterior. Por exemplo:
C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
- Coloque os certificados nos diretórios adequados criados no passo anterior. Por exemplo:
Na janela do PowerShell, altere os valores de
RegionName
eIdentitySystem
FQDN
adequados para o ambiente do Azure Stack Hub e execute o seguinte 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
Verifique a saída e certifique-se de que todos os certificados passam em todos os testes. Por exemplo:
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
Para validar certificados para outros serviços do Azure Stack Hub, altere o valor para
-CertificatePath
. Por exemplo:# 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
Cada pasta deve conter um único ficheiro PFX para o tipo de certificado. Se um tipo de certificado tiver requisitos de vários certificados, são esperadas pastas aninhadas para cada certificado individual e sensíveis a nomes. O código seguinte mostra uma estrutura de pasta/certificado de exemplo para todos os tipos de certificado e o valor adequado para
-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
Sintoma: Os testes são ignorados
Causa: AzsReadinessChecker ignora determinados testes se não for cumprida uma dependência:
Outros certificados são ignorados se a cadeia de certificados falhar.
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
Resolução: siga as orientações da ferramenta na secção de detalhes em cada conjunto de testes para cada certificado.
Sintoma: a verificação da CRL HTTP falha apesar de ter um CDP HTTP escrito em extensões x509.
Causa: Atualmente, o AzsReadinessChecker não consegue verificar a existência de CDP HTTP em alguns idiomas.
Resolução: execute a validação com a linguagem do SO definida como EN-US.
Diretório | Certificado |
---|---|
ACSBlob | wildcard_blob_<region>_<externalFQDN> |
ACSQueue | wildcard_queue_<region>_<externalFQDN> |
ACSTable | wildcard_table_<region>_<externalFQDN> |
Anfitrião da Extensão Administração | wildcard_adminhosting_<region>_<externalFQDN> |
Portal de Administração | adminportal_<region>_<externalFQDN> |
arm Administração | adminmanagement_<region>_<externalFQDN> |
ARM Público | management_<region>_<externalFQDN> |
KeyVault | wildcard_vault_<region>_<externalFQDN> |
KeyVaultInternal | wildcard_adminvault_<region>_<externalFQDN> |
Anfitrião de Extensão Pública | wildcard_hosting_<region>_<externalFQDN> |
Portal Público | portal_<region>_<externalFQDN> |
Assim que os certificados forem validados pelo AzsReadinessChecker, estará pronto para utilizá-los para a implementação do Azure Stack Hub ou para a rotação de segredos pós-implementação.
- Para implementação, transfira os certificados de forma segura para o seu engenheiro de implementação para que possam copiá-los para o anfitrião da máquina virtual de implementação, conforme especificado nos requisitos de PKI do Azure Stack Hub – Certificados obrigatórios.
- Para obter a rotação de segredos, veja Rodar segredos no Azure Stack Hub. A rotação de certificados de fornecedor de recursos de valor acrescentado é abordada na secção Rodar segredos externos.