Проверка сертификатов PKI Azure Stack Hub

Инструмент проверки готовности Azure Stack Hub, описанный в этой статье, доступен в коллекции PowerShell. Используйте средство для проверки того, что созданные сертификаты инфраструктуры открытых ключей (PKI) подходят для предварительного развертывания. Проверьте сертификаты, оставив достаточно времени для тестирования и повторной выдачи сертификатов при необходимости.

Средство проверки готовности выполняет следующие проверки сертификата:

  • Анализ PFX
    Проверяет наличие допустимого PFX-файла, правильность пароля и наличие защиты паролем для общедоступной информации.
  • Дата окончания срока действия
    Проверяет наличие минимального срока действия в семь дней.
  • Алгоритм подписи
    Проверяет, не используется ли алгоритм подписи SHA1.
  • Закрытый ключ
    Проверяет наличие закрытого ключа и то, экспортируется ли он с помощью атрибута локального компьютера.
  • Цепочка сертификатов
    Проверяет наличие и целостность цепочки сертификатов, включая самозаверяющиеся сертификаты.
  • DNS-имена
    Проверяет, имеются ли в сети хранения данных соответствующие DNS-имена для каждой конечной точки или присутствует ли вспомогательный подстановочный знак.
  • Использование ключа
    Проверяет, применяется ли цифровая подпись и шифрование при использовании ключа, а при расширенном использовании ключа также проверяет выполнение аутентификации сервера и клиента.
  • Размер ключа
    Проверяет, достигает ли размер ключа значения 2048.
  • Порядок в цепочке
    Проверяет порядок других сертификатов, чтобы убедиться, что порядок правильный.
  • Другие сертификаты
    Проверяет, не были ли упакованы в PFX-файл другие сертификаты (кроме соответствующего конечного сертификата и его цепочки).

Важно!

PFX-файл и пароль сертификата PKI должны быть конфиденциальными.

Предварительные требования

Прежде чем начать проверку сертификатов PKI для развертывания Azure Stack Hub, необходимо убедиться, что в системе присутствуют следующие компоненты и установлена нужная ОС.

  • Средство проверки готовности Microsoft Azure Stack Hub.
  • Сертификаты SSL, экспортированные в соответствии с инструкциями по подготовке.
  • DeploymentData.json.
  • Windows 10 или Windows Server 2016.

Выполнение проверки сертификата основных служб

Выполните следующие действия, чтобы проверить PKI-сертификаты Azure Stack Hub для развертывания и смены секретов:

  1. Установите AzsReadinessChecker из командной строки PowerShell (5.1 или более поздней версии), выполнив следующий командлет:

    Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. Создайте структуру каталога сертификатов. В приведенном ниже примере вы можете изменить <C:\Certificates\Deployment> на новый путь каталога по своему усмотрению.

    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}
    

    Примечание

    AD FS и Graph требуются, если вы используете AD FS как свою систему идентификации. Пример:

    $directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'ADFS', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'Graph', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
    
    • Поместите сертификаты в соответствующие каталоги, созданные на предыдущем шаге. Пример:
      • C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
      • C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
      • C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
  3. В окне PowerShell измените значения RegionNameи , FQDNIdentitySystem соответствующие среде Azure Stack Hub, и выполните следующий командлет:

    $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. Проверьте выходные данные. Все сертификаты должны пройти все проверки. Пример.

    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
    

    Чтобы проверить сертификаты для других служб Azure Stack Hub, измените значение для -CertificatePath. Пример.

    # 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
    

    Каждая папка должна содержать один PFX-файл для каждого типа сертификата. Если тип сертификата поддерживает несколько сертификатов, требуются вложенные папки для каждого отдельного сертификата с учетом имени. В следующем коде показан пример структуры папок или сертификатов для всех типов сертификатов и соответствующее значение для -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
    
    

Известные проблемы

Признак. Проверки пропускаются.

Причина. AzsReadinessChecker пропускает определенные тесты, если зависимость не выполнена:

  • Проверка других сертификатов пропускается, если цепочка сертификатов нецелостна.

    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
    

Решение. Следуйте указаниям в руководстве по инструментам в разделе сведений о каждом наборе проверок сертификата.

Симптом: проверка списка отзыва сертификатов HTTP завершается сбоем, несмотря на то, что HTTP CDP записан в расширения x509.

Причина. В настоящее время AzsReadinessChecker не может проверка для HTTP CDP на некоторых языках.

Решение. Выполните проверку с языком ОС, для параметра "EN-US".

Сертификаты

Directory Сертификат
ACSBlob wildcard_blob_<region>_<externalFQDN>
ACSQueue wildcard_queue_<region>_<externalFQDN>
ACSTable wildcard_table_<region>_<externalFQDN>
Хост-процесс для расширений администратора wildcard_adminhosting_<region>_<externalFQDN>
Портал администрирования adminportal_<region>_<externalFQDN>
ARM Admin adminmanagement_<region>_<externalFQDN>
ARM Public management_<region>_<externalFQDN>
Хранилище ключей wildcard_vault_<region>_<externalFQDN>
Внутреннее хранилище Key Vault wildcard_adminvault_<region>_<externalFQDN>
Общедоступный хост-процесс для расширений wildcard_hosting_<region>_<externalFQDN>
Общедоступный портал portal_<region>_<externalFQDN>

Дальнейшие действия

После проверки сертификатов с помощью AzsReadinessChecker вы можете использовать их для развертывания Azure Stack Hub или смены секретов после развертывания.