Compartir vía


Preparación de certificados PKI de Azure Stack Hub

La herramienta Azure Stack Hub Readiness Checker que se describe en este artículo está disponible en la Galería de PowerShell. Use la herramienta para comprobar si los certificados de infraestructura de clave pública (PKI) generados son válidos para la implementación previa. Cuando valide los certificados, deje tiempo suficiente para que se prueben los certificados y, en caso necesario, vuelvan a emitirse.

La herramienta Readiness Checker realiza las siguientes validaciones de certificados:

  • Análisis de PFX
    Comprueba si el archivo PFX es válido, la contraseña es correcta y si la información pública está protegida con contraseña.
  • Fecha de expiración
    Comprueba que tenga una validez mínima de siete días.
  • Algoritmo de firma
    Comprueba que el algoritmo de firma no sea SHA1.
  • Clave privada
    Comprueba si la clave privada está presente y se exporta con el atributo de máquina local.
  • Cadena de certificados
    Comprueba si la cadena de certificados está intacta junto con los certificados autofirmados.
  • Nombres DNS
    Comprueba que el SAN contiene nombres DNS correspondientes a cada punto de conexión o si hay un comodín compatible.
  • Uso de la clave
    Comprueba si el uso de la clave contiene una firma digital y el cifrado de la clave, y si el uso mejorado de clave contiene la autenticación del servidor y del cliente.
  • Tamaño de la clave
    Comprueba si tamaño de la clave es 2048 o más.
  • Orden de la cadena
    Comprueba que el orden de los demás certificados que conforman la cadena es correcto.
  • Otros certificados
    Garantiza que ningún otro certificado se haya empaquetado en PFX, solo el certificado de hoja pertinente y su cadena.

Importante

El certificado PKI es un archivo PFX y una contraseña que deben tratarse como información confidencial.

Requisitos previos

El sistema debe cumplir los siguientes requisitos previos para poder validar los certificados PKI de una implementación de Azure Stack Hub:

  • Microsoft Azure Stack Hub Readiness Checker.
  • Certificados SSL exportados siguiendo las instrucciones de preparación.
  • DeploymentData.json.
  • Windows 10 o Windows Server 2016.

Ejecución de la validación de certificados de servicios principales

Siga estos pasos para validar los certificados PKI de Azure Stack Hub para la implementación y rotación de secretos:

  1. Instale AzsReadinessChecker desde un símbolo del sistema de PowerShell (5.1 o superior) mediante la ejecución del siguiente cmdlet:

    Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. Cree la estructura de directorios del paquete. En el ejemplo siguiente, puede cambiar <C:\Certificates\Deployment> por la ruta de un nuevo directorio de su elección.

    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

    Se requieren AD FS y Graph si utiliza AD FS como sistema de identidad. Por ejemplo:

    $directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'ADFS', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'Graph', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
    
    • Sitúe los certificados en los directorios apropiados que creó en el paso anterior. Por ejemplo:
      • C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
      • C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
      • C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
  3. En la ventana de PowerShell, cambie los valores de RegionName, FQDN y IdentitySystem apropiados para el entorno de Azure Stack Hub y ejecute el siguiente 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. Compruebe la salida y asegúrese de que todos los certificados pasen todas las pruebas. Por ejemplo:

    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 de otros servicios de Azure Stack Hub cambie el valor de -CertificatePath. Por ejemplo:

    # 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 carpeta debe contener un único archivo PFX para el tipo de certificado. Si un tipo de certificado requiere varios certificados, es previsible la existencia de carpetas anidadas y con un nombre que distingue mayúsculas de minúsculas para cada certificado individual. En el código siguiente se muestra una estructura de carpeta o certificado de ejemplo para todos los tipos de certificado y el valor adecuado 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
    
    

Problemas conocidos

Síntoma: se omiten las pruebas

Causa: AzsReadinessChecker omite varias pruebas si no se cumple una dependencia:

  • Otros certificados se omiten si se produce un error en la cadena de certificados.

    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
    

Solución: siga las instrucciones de la herramienta que se describen en la sección de detalles en cada conjunto de pruebas de cada certificado.

Síntoma: se produce un error en la comprobación de LA CRL HTTP a pesar de tener un CDP HTTP escrito en extensiones x509.

Causa: Actualmente, AzsReadinessChecker no puede comprobar el CDP HTTP en algunos lenguajes.

Solución: Ejecute la validación con el idioma del sistema operativo establecido en EN-US.

Certificados

Directorio Certificado
ACSBlob wildcard_blob_<region>_<externalFQDN>
ACSQueue wildcard_queue_<region>_<externalFQDN>
ACSTable wildcard_table_<region>_<externalFQDN>
Host de extensiones de administración wildcard_adminhosting_<region>_<externalFQDN>
Admin Portal adminportal_<region>_<externalFQDN>
Administración de ARM adminmanagement_<region>_<externalFQDN>
Público de ARM management_<region>_<externalFQDN>
KeyVault wildcard_vault_<region>_<externalFQDN>
KeyVaultInternal wildcard_adminvault_<region>_<externalFQDN>
Host de extensiones públicas wildcard_hosting_<region>_<externalFQDN>
Public Portal portal_<region>_<externalFQDN>

Pasos siguientes

Una vez que AzsReadinessChecker valide los certificados, podrá utilizarlos en la implementación de Azure Stack Hub o en la rotación de secretos posterior a la implementación.