解决 Azure Stack Hub PKI 证书的常见问题

可以通过本文中的信息来了解并解决 Azure Stack Hub PKI 证书的常见问题。 使用 Azure Stack Hub 就绪性检查器工具验证 Azure Stack Hub PKI 证书时,可以发现问题。 该工具先检查证书是否满足 Azure Stack Hub 部署和 Azure Stack Hub 机密轮换的 PKI 要求,然后将结果记录到 report.json 文件

HTTP CRL - 警告

问题 - 证书未包含 CDP 扩展中的 HTTP CRL。

修复 - 这是一个非阻塞性问题。 根据 Azure Stack Hub 公钥基础结构 (PKI) 证书要求,Azure Stack 需要 HTTP CRL 来进行吊销检查。 在证书上未检测到 HTTP CRL。 为了确保证书吊销检查正常进行,证书颁发机构应颁发一个包含 CDP 扩展中的 HTTP CRL 的证书。

HTTP CRL - 失败

问题 - 无法连接到 CDP 扩展中的 HTTP CRL。

修复 - 这是一个阻塞性问题。 根据发布 Azure Stack Hub 端口和 URL(出站),Azure Stack 需要连接到 HTTP CRL 进行吊销检查。

PFX 加密

问题 - PFX 加密不是 TripleDES-SHA1。

修复 - 使用 TripleDES-SHA1 加密导出 PFX 文件。 从证书管理单元导出时或使用 Export-PFXCertificate 时,这是针对所有 Windows 10 客户端的默认加密。

读取 PFX

警告 - 密码仅保护证书中的私密信息。

修复 - 使用与“启用证书隐私”相对应的可选设置来导出 PFX 文件。

问题 - PFX 文件无效。

修复 - 使用准备用于部署的 Azure Stack Hub PKI 证书中的步骤重新导出证书。

签名算法

问题 - 签名算法为 SHA1。

修复 - 执行“生成 Azure Stack Hub 证书签名请求”中的步骤,使用签名算法 SHA256 重新生成证书签名请求 (CSR)。 然后向证书颁发机构重新提交 CSR,要求其重新颁发证书。

私钥

问题 - 私钥缺失或者不包含本地计算机属性。

修复 - 在生成 CSR 的计算机中,使用准备用于部署的 Azure Stack Hub PKI 证书中的步骤重新导出证书。 这些步骤包括从本地计算机证书存储进行导出。

证书链

问题 - 证书链不完整。

修复 - 证书应包含完整的证书链。 按照准备用于部署的 Azure Stack Hub PKI 证书中的步骤重新导出证书,选择“包括证书路径中的所有证书(如果可能)”选项。

DNS 名称

问题 - 证书上的 DNSNameList 不包含 Azure Stack Hub 服务终结点名称或有效的通配符匹配项。 通配符匹配项仅适用于 DNS 名称最左侧的命名空间。 例如,*.region.domain.com 仅对 portal.region.domain.com 有效,而对 *.table.region.domain.com 无效。

修复 - 执行“生成 Azure Stack Hub 证书签名请求”中的步骤,以便使用为 Azure Stack Hub 终结点提供支持所需的正确 DNS 名称重新生成 CSR。 将 CSR 重新提交到证书颁发机构。 然后按照准备用于部署的 Azure Stack Hub PKI 证书中的步骤,从生成 CSR 的计算机导出证书。

密钥使用情况

问题 - 密钥用法缺少数字签名或密钥加密,或者增强型密钥用法缺少服务器身份验证或客户端身份验证。

修复 - 按照生成 Azure Stack Hub 证书签名请求中的步骤,使用正确的密钥用法属性重新生成 CSR。 将 CSR 重新提交给证书颁发机构,并确认证书模板未覆盖请求中的密钥用法。

密钥大小

问题 - 密钥大小不到 2048。

修复 - 按照生成 Azure Stack Hub 证书签名请求中的步骤,使用正确的密钥长度 (2048) 重新生成 CSR,然后将 CSR 重新提交给证书颁发机构。

链序

问题 - 证书链的顺序不正确。

修复 - 按照准备用于部署的 Azure Stack Hub PKI 证书中的步骤重新导出证书,选择“包括证书路径中的所有证书(如果可能)”选项。 确保仅选择分支证书进行导出。

其他证书

问题 - PFX 包包含的证书不是分支证书,或者不是证书链的一部分。

修复 - 按照准备用于部署的 Azure Stack Hub PKI 证书中的步骤重新导出证书,选择“包括证书路径中的所有证书(如果可能)”选项。 确保仅选择分支证书进行导出。

修复常见的打包问题

AzsReadinessChecker 工具包含名为 Repair-AzsPfxCertificate 的帮助程序 cmdlet,它可以通过导入和导出 PFX 文件来修复常见的打包问题,这些问题包括:

  • PFX 加密不是 TripleDES-SHA1。
  • 私钥缺少本地计算机属性。
  • 证书链不完整或错误。 如果 PFX 包不包含证书链,则本地计算机必须包含。
  • 其他证书

如果需要生成新的 CSR 并重新颁发证书,则 Repair-AzsPfxCertificate 无用。

先决条件

在运行此工具的计算机上,必须满足以下先决条件:

导入和导出现有的 PFX 文件

  1. 在满足先决条件的计算机上,打开一个提升的 PowerShell 提示符,然后运行以下命令来安装 Azure Stack Hub 就绪性检查器:

    Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  2. 在 PowerShell 提示符下,运行以下 cmdlet 来设置 PFX 密码。 出现提示时,输入密码:

    $password = Read-Host -Prompt "Enter password" -AsSecureString
    
  3. 在 PowerShell 提示符下,运行以下命令来导出新的 PFX 文件:

    • 对于 -PfxPath,请指定要处理的 PFX 文件的路径。 在以下示例中,路径为 .\certificates\ssl.pfx
    • 对于 -ExportPFXPath,请指定要导出的 PFX 文件的位置和名称。 在以下示例中,路径为 .\certificates\ssl_new.pfx
    Repair-AzsPfxCertificate -PfxPassword $password -PfxPath .\certificates\ssl.pfx -ExportPFXPath .\certificates\ssl_new.pfx
    
  4. 在工具完成相关操作后,查看成功后的输出:

    Repair-AzsPfxCertificate v1.1809.1005.1 started.
    Starting Azure Stack Hub Certificate Import/Export
    Importing PFX .\certificates\ssl.pfx into Local Machine Store
    Exporting certificate to .\certificates\ssl_new.pfx
    Export complete. Removing certificate from the local machine store.
    Removal complete.
    Log location (contains PII): C:\Users\username\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessChecker.log
    Repair-AzsPfxCertificate Completed
    

后续步骤