准备用于部署或轮换的 Azure Stack Hub PKI 证书

注意

本文仅适用于准备外部证书,这些证书用于保护外部基础结构和服务上的终结点。 内部证书在证书轮换过程中单独进行管理。

备注

如果要安装 Azure 容器注册表 (ACR),建议让外部 ACR 证书的到期日期与其他外部 Azure Stack Hub 证书的到期日期保持一致。 此外,建议使用一个与保护其他外部证书 PFX 时使用的密码相同的密码来保护 ACR 的 PFX。

必须使用符合 Azure Stack Hub 的证书要求的属性来导入和导出从证书颁发机构 (CA) 获取的证书文件。

本文介绍如何导入、打包和验证外部证书,以便为 Azure Stack Hub 部署或机密轮换做准备。

必备条件

在打包用于 Azure Stack Hub 部署的 PKI 证书之前,系统应符合以下先决条件:

  • 从证书颁发机构返回的证书存储在单个目录中,格式为 .cer 格式(其他可配置格式包括 .cert、.sst 和 .pfx)。
  • Windows 10 或 Windows Server 2016(或更高版本)
  • 使用生成证书签名请求的同一系统(除非要针对的是预打包到 PFX 中的证书)。
  • 使用提升的 PowerShell 会话。

继续进行到相应的准备证书(Azure Stack 就绪性检查器)准备证书(手动步骤)部分。

准备证书(Azure Stack 就绪性检查器)

使用 Azure Stack 就绪性检查器 PowerShell cmdlet 将证书打包,步骤如下:

  1. 在 PowerShell 提示符(5.1 或更高版本)下,通过运行以下 cmdlet 来安装 Azure Stack 就绪性检查器模块:

        Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. 指定证书文件的路径。 例如:

        $Path = "$env:USERPROFILE\Documents\AzureStack"
    
  3. 声明 pfxPassword。 例如:

        $pfxPassword = Read-Host -AsSecureString -Prompt "PFX Password"
    
  4. 声明要将生成的 PFX 导出到的 ExportPath。 例如:

        $ExportPath = "$env:USERPROFILE\Documents\AzureStack"
    
  5. 将证书转换为 Azure Stack Hub 证书。 例如:

        ConvertTo-AzsPFX -Path $Path -pfxPassword $pfxPassword -ExportPath $ExportPath
    
  6. 查看输出:

    ConvertTo-AzsPFX v1.2005.1286.272 started.
    
    Stage 1: Scanning Certificates
        Path: C:\Users\[*redacted*]\Documents\AzureStack Filter: CER Certificate count: 11
        adminmanagement_east_azurestack_contoso_com_CertRequest_20200710235648.cer
        adminportal_east_azurestack_contoso_com_CertRequest_20200710235645.cer
        management_east_azurestack_contoso_com_CertRequest_20200710235644.cer
        portal_east_azurestack_contoso_com_CertRequest_20200710235646.cer
        wildcard_adminhosting_east_azurestack_contoso_com_CertRequest_20200710235649.cer
        wildcard_adminvault_east_azurestack_contoso_com_CertRequest_20200710235642.cer
        wildcard_blob_east_azurestack_contoso_com_CertRequest_20200710235653.cer
        wildcard_hosting_east_azurestack_contoso_com_CertRequest_20200710235652.cer
        wildcard_queue_east_azurestack_contoso_com_CertRequest_20200710235654.cer
        wildcard_table_east_azurestack_contoso_com_CertRequest_20200710235650.cer
        wildcard_vault_east_azurestack_contoso_com_CertRequest_20200710235647.cer
    
    Detected ExternalFQDN: east.azurestack.contoso.com
    
    Stage 2: Exporting Certificates
        east.azurestack.contoso.com\Deployment\ARM Admin\ARMAdmin.pfx
        east.azurestack.contoso.com\Deployment\Admin Portal\AdminPortal.pfx
        east.azurestack.contoso.com\Deployment\ARM Public\ARMPublic.pfx
        east.azurestack.contoso.com\Deployment\Public Portal\PublicPortal.pfx
        east.azurestack.contoso.com\Deployment\Admin Extension Host\AdminExtensionHost.pfx
        east.azurestack.contoso.com\Deployment\KeyVaultInternal\KeyVaultInternal.pfx
        east.azurestack.contoso.com\Deployment\ACSBlob\ACSBlob.pfx
        east.azurestack.contoso.com\Deployment\Public Extension Host\PublicExtensionHost.pfx
        east.azurestack.contoso.com\Deployment\ACSQueue\ACSQueue.pfx
        east.azurestack.contoso.com\Deployment\ACSTable\ACSTable.pfx
        east.azurestack.contoso.com\Deployment\KeyVault\KeyVault.pfx
    
    Stage 3: Validating Certificates.
    
    Validating east.azurestack.contoso.com-Deployment-AAD certificates in C:\Users\[*redacted*]\Documents\AzureStack\east.azurestack.contoso.com\Deployment 
    
    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
        ...
    Log location (contains PII): C:\Users\[*redacted*]\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessChecker.log
    ConvertTo-AzsPFX Completed
    

    注意

    有关其他用法,请使用 Get-help ConvertTo-AzsPFX -Full 以进一步了解用法,如针对不同的证书格式禁用验证或筛选。

    成功验证之后,可以提供用于部署或轮换的证书,而不需要任何其他步骤。

准备证书(手动步骤)

对于新的 Azure Stack Hub PKI 证书,请使用以下手动步骤来打包证书。

导入证书

  1. 从所选 CA 获取的原始证书版本复制到部署主机上的目录。

    警告

    如果已以任何方式导入、导出或更改直接由 CA 提供的文件,请勿复制该文件。

  2. 右键单击证书并选择“安装证书”或“安装PFX”,具体取决于从 CA 传送证书的方式。

  3. 证书导入向导中,选择“本地计算机”作为导入位置。 选择“下一步” 。 在下一个屏幕上,再次选择“下一步”。

    Local machine import location for certificate

  4. 选择“将所有证书放在以下存储中”,然后选择“企业信任”作为位置。 选择“确定”以关闭“证书存储选择”对话框,然后选择“下一步”

    Configure the certificate store for certificate import

    a. 如果要导入 PFX,则会看到其他对话框。 在“私钥保护”页上,输入证书文件的密码,然后启用“将此密钥标记为可导出”选项,它使你稍后能够备份或传输密钥。 选择下一步

    Mark key as exportable

  5. 选择“完成”以完成导入。

注意

导入 Azure Stack Hub 的证书后,证书的私钥将作为 PKCS 12 文件 (PFX) 存储在群集存储上。

导出证书

打开证书管理员 MMC 控制台并连接到本地计算机证书存储。

  1. 打开 Microsoft 管理控制台。 若要在 Windows 10 中打开控制台,请右键单击“开始”菜单,选择“运行”,然后键入“mmc”并按 Enter 键 。

  2. 选择“文件”>“添加/删除管理单元”,然后选择“证书”并选择“添加”。

    Add Certificates Snap-in in Microsoft Management Console

  3. 选择“计算机帐户”,然后选择“下一步”。 选择“本地计算机”,然后选择“完成”。 选择“确定”以关闭“添加/删除管理单元”页。

    Select account for Add Certificates Snap-in in Microsoft Management Console

  4. 浏览到“证书”>“企业信任”>“证书位置”。 确认在右侧看到你的证书。

  5. 从证书管理员控制台任务栏中,选择“操作”>“所有任务”>“导出”。 选择“下一步” 。

    注意

    根据你拥有 Azure Stack Hub 证书的数量,可能需要多次完成此过程。

  6. 选择“是,导出私钥”,然后选择“下一步” 。

  7. 在“导出文件格式”部分执行以下操作:

    • 选择“包括证书路径中的所有证书(如果可能)”。

    • 选择“导出所有扩展属性”。

    • 选择“启用证书隐私”。

    • 选择下一步

      Certificate export wizard with selected options

  8. 选择“密码”并为证书提供密码。 创建满足以下密码复杂性要求的密码:

    • 最小长度为 8 个字符。
    • 至少包含以下字符中的三种字符:大写字母、小写字母、0-9 中的数字、特殊字符、不是大写也不是小写的字母字符。

    记下此密码。 需将它用作部署参数。

  9. 选择“下一步” 。

  10. 选择要导出的 PFX 文件的文件名和位置。 选择“下一步”。

  11. 选择“完成”。

后续步骤

验证 PKI 证书