Validar os certificados PKI do Azure Stack Hub

A Azure Stack Hub do Readiness Checker descrita neste artigo está disponível no Galeria do PowerShell. Use a ferramenta para validar se os certificados de PKI (infraestrutura de chave pública) gerados são adequados para pré-implantação. Valide os certificados, deixando tempo suficiente para testar e emita certificados em reemitação, se necessário.

A ferramenta Readiness Checker executa as seguintes validações de certificado:

  • Analisar PFX
    Verifica se há um arquivo PFX válido, senha correta e se as informações públicas estão protegidas pela senha.
  • 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 de computador local.
  • Cadeia de certificados
    Verifica se a cadeia de certificados está intacta, incluindo uma verificação de certificados auto-assinados.
  • Nomes DNS
    Verifica se a SAN contém nomes DNS relevantes para cada ponto de extremidade ou se há um curinga de suporte.
  • Uso de chave
    Verifica se o uso da chave contém uma assinatura digital e uma cerca de chave e verifica se o uso aprimorado de chave contém autenticação de servidor e autenticação de cliente.
  • Tamanho da chave
    Verifica se o tamanho da chave é 2048 ou maior.
  • Ordem da cadeia
    Verifica a ordem dos outros certificados validando se o pedido está correto.
  • Outros certificados
    Verifique se nenhum outro certificado foi empacotado em PFX além do certificado folha relevante e sua cadeia.

Importante

O certificado PKI é um arquivo PFX e a senha deve ser tratada como informações confidenciais.

Pré-requisitos

Seu sistema deve atender aos seguintes pré-requisitos antes de validar certificados PKI para uma Azure Stack Hub implantação:

  • Microsoft Azure Verificação de Preparação do Stack Hub.
  • Certificados SSL exportados seguindo as instruções de preparação.
  • DeploymentData.json.
  • Windows 10 ou Windows Server 2016.

Executar a validação de certificado de serviços de núcleo

Use estas etapas para validar os certificados Azure Stack Hub PKI para implantação e rotação de segredo:

  1. Instale o AzsReadinessChecker de um prompt do PowerShell (5.1 ou superior) executando o seguinte cmdlet:

        Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. Crie a estrutura do diretório do certificado. No exemplo a seguir, você pode alterar <C:\Certificates\Deployment> para um novo caminho de diretório de 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}
    

    Observação

    AD FS e Graph serão necessários se você estiver usando AD FS como 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 seus certificados nos diretórios apropriados criados na etapa anterior. Por exemplo:
      • C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
      • C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
      • C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
  3. Na janela do PowerShell, altere os valores de e apropriados para o RegionName ambiente Azure Stack Hub e execute o seguinte FQDNIdentitySystem 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  
    
  4. Verifique a saída e verifique se 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 Azure Stack Hub, altere o valor para -CertificateType . 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
    
    # IoTHub
    Invoke-AzsHubIoTHubCertificateValidation -CertificatePath C:\Certificates\IoTHub -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com
    

    Cada pasta deve conter um único arquivo PFX para o tipo de certificado. Se um tipo de certificado tiver requisitos de vários certificados, as pastas aninhadas para cada certificado individual serão esperadas e sensíveis ao nome. O código a seguir mostra um exemplo de estrutura de pasta/certificado para todos os tipos de certificado e o valor apropriado para -CertificateType e -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             #     -CertificateType AppServices `
                |   |       api.pfx     #     -CertificatePath C:\Certificates\AppServices
                |   |
                |   +---DefaultDomain
                |   |       wappsvc.pfx
                |   |
                |   +---Identity
                |   |       sso.pfx
                |   |
                |   \---Publishing
                |           ftp.pfx
                |
                +---DBAdapter           # Invoke-AzsCertificateValidation `
                |       dbadapter.pfx   #   -CertificateType DBAdapter `
                |                       #   -CertificatePath C:\Certificates\DBAdapter
                |
                +---Deployment          # Invoke-AzsCertificateValidation `
                |   +---ACSBlob         #   -CertificateType Deployment `
                |   |       acsblob.pfx #   -CertificatePath C:\Certificates\Deployment
                |   |
                |   +---ACSQueue
                |   |       acsqueue.pfx
               ./. ./. ./. ./. ./. ./. ./.    <- Deployment certificate tree trimmed.
                |   \---Public Portal
                |           portal.pfx
                |
                +---EventHubs           # Invoke-AzsCertificateValidation `
                |       eventhubs.pfx   #   -CertificateType EventHubs `
                |                       #   -CertificatePath C:\Certificates\EventHubs
                |
                \---IoTHub              # Invoke-AzsCertificateValidation `
                        iothub.pfx      #   -CertificateType IoTHub `
                                        #   -CertificatePath C:\Certificates\IoTHub
    

Problemas conhecidos

Sintoma:os testes são ignorados

Causa:O AzsReadinessChecker ignora determinados testes se uma dependência não for atendida:

  • Outros certificados serã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 diretrizes da ferramenta na seção de detalhes em cada conjunto de testes para cada certificado.

Sintoma:a verificação de CRL HTTP falha apesar de ter um CDP HTTP gravado em extensões x509.

Causa:atualmente, o AzsReadinessChecker não pode verificar o CDP HTTP em alguns idiomas.

Resolução:execute a validação com a linguagem do sistema operacional definida como EN-US.

Certificados

Diretório Certificado
ACSBlob wildcard_blob_<region>_<externalFQDN>
ACSQueue wildcard_queue_<region>_<externalFQDN>
ACSTable wildcard_table_<region>_<externalFQDN>
Host de Extensão de Administrador wildcard_adminhosting_<region>_<externalFQDN>
Portal de administração adminportal_<region>_<externalFQDN>
Administrador do ARM adminmanagement_<region>_<externalFQDN>
ARM Público management_<region>_<externalFQDN>
KeyVault wildcard_vault_<region>_<externalFQDN>
KeyVaultInternal wildcard_adminvault_<region>_<externalFQDN>
Host de Extensão Pública wildcard_hosting_<region>_<externalFQDN>
Portal Público portal_<region>_<externalFQDN>

Próximas etapas

Depois que seus certificados são validados pelo AzsReadinessChecker, você está pronto para usá-los para Azure Stack Hub implantação ou rotação de segredo pós-implantação.