为 Azure Stack Hub 生成证书签名请求

可以使用 Azure Stack Hub 就绪性检查器工具创建适用于 Azure Stack Hub 部署的证书签名请求(CSR),或为现有部署续订证书。 请务必请求、生成和验证证书,并留出足够的时间在部署之前对其进行测试。

该工具用于根据本文顶部的 “选择 CSR 证书方案 选择器”请求以下证书:

先决条件

在为 Azure Stack Hub 部署生成 PKI 证书的 CSR 之前,系统必须满足以下先决条件:

  • 你必须在具有 Windows 10 或更高版本或 Windows Server 2016 或更高版本的计算机上。
  • 使用以下 cmdlet 从 PowerShell 提示符(5.1 或更高版本)安装 Azure Stack Hub 就绪情况检查器工具
         Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
    
  • 证书需要以下属性:
    • 区域名称
    • 外部完全限定的域名 (FQDN)
    • 使用者

为新部署证书生成 CSR

注释

生成证书签名请求需要提升。 在无法进行提升的受限环境中,可以使用此工具生成明文模板文件,其中包含 Azure Stack Hub 外部证书所需的所有信息。 然后,需要在权限提升的会话上使用这些模板文件来完成生成公钥/私钥对。 有关详细信息,请参阅下文。

若要为新的 Azure Stack Hub PKI 证书准备 CSR,请完成以下步骤:

  1. 在安装了就绪情况检查器工具的计算机上打开 PowerShell 会话。

  2. 声明以下变量:

    注释

    <regionName>.<externalFQDN> 构成在 Azure Stack Hub 中创建所有外部 DNS 名称的基础。 在以下示例中,门户将为 portal.east.azurestack.contoso.com

    $outputDirectory = "$ENV:USERPROFILE\Documents\AzureStackCSR" # An existing output directory
    $IdentitySystem = "AAD"                     # Use "AAD" for Azure Active Director, "ADFS" for Active Directory Federation Services
    $regionName = 'east'                        # The region name for your Azure Stack Hub deployment
    $externalFQDN = 'azurestack.contoso.com'    # The external FQDN for your Azure Stack Hub deployment
    

现在,使用相同的 PowerShell 会话生成 CSR。 这些说明特定于你选择的 “主题 ”格式:

注释

Azure Stack Hub 服务的第一个 DNS 名称将配置为证书请求上的 CN 字段。

  1. 声明主题,例如:

    $subject = "C=US,ST=Washington,L=Redmond,O=Microsoft,OU=Azure Stack Hub"
    
  1. 通过完成以下任一操作来生成 CSR:

    • 对于 生产部署环境,第一个脚本将为部署证书生成 CSR:

      New-AzsHubDeploymentCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subject -OutputRequestPath $OutputDirectory -IdentitySystem $IdentitySystem
      
    • 如果需要,第二个脚本会使用 -IncludeContainerRegistry,并同时为 Azure 容器注册表和部署证书生成 CSR:

      New-AzsHubDeploymentCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subject -OutputRequestPath $OutputDirectory -IdentitySystem $IdentitySystem -IncludeContainerRegistry
      
    • 第三个脚本将为已安装的任何可选 PaaS 服务生成 CSR:

      # App Services
      New-AzsHubAppServicesCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subject -OutputRequestPath $OutputDirectory
      
      # DBAdapter (SQL/MySQL)
      New-AzsHubDbAdapterCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subject -OutputRequestPath $OutputDirectory
      
      # EventHubs
      New-AzsHubEventHubsCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subject -OutputRequestPath $OutputDirectory
      
      # Azure Container Registry
      New-AzsHubAzureContainerRegistryCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subject -OutputRequestPath $OutputDirectory 
      
    • 对于 低特权环境,若要生成具有声明必要属性的明文证书模板文件,请添加 -LowPrivilege 参数:

      New-AzsHubDeploymentCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subject -OutputRequestPath $OutputDirectory -IdentitySystem $IdentitySystem -LowPrivilege
      
    • 对于 开发和测试环境,若要生成具有多个使用者可选名称的单个 CSR,请添加 -RequestType SingleCSR 参数和值。

      重要

      不建议将此方法用于生产环境。

      New-AzsHubDeploymentCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -RequestType SingleCSR -subject $subject -OutputRequestPath $OutputDirectory -IdentitySystem $IdentitySystem
      

完成最终步骤:

  1. 查看输出:

    Starting Certificate Request Process for Deployment
    CSR generating for following SAN(s): *.adminhosting.east.azurestack.contoso.com,*.adminvault.east.azurestack.contoso.com,*.blob.east.azurestack.contoso.com,*.hosting.east.azurestack.contoso.com,*.queue.east.azurestack.contoso.com,*.table.east.azurestack.contoso.com,*.vault.east.azurestack.contoso.com,adminmanagement.east.azurestack.contoso.com,adminportal.east.azurestack.contoso.com,management.east.azurestack.contoso.com,portal.east.azurestack.contoso.com
    Present this CSR to your Certificate Authority for Certificate Generation:  C:\Users\username\Documents\AzureStackCSR\Deployment_east_azurestack_contoso_com_SingleCSR_CertRequest_20200710165538.req
    Certreq.exe output: CertReq: Request Created
    
  2. 如果使用了-LowPrivilege参数,则在C:\Users\username\Documents\AzureStackCSR子目录中生成了.inf文件。 例如:

    C:\Users\username\Documents\AzureStackCSR\Deployment_east_azurestack_contoso_com_SingleCSR_CertRequest_20200710165538_ClearTextTemplate.inf

    将文件复制到允许提升的系统,然后使用以下语法对每个请求certreq进行签名: certreq -new <example.inf> <example.req> 然后在提升权限的系统上完成其余的过程,因为需要使 CA 签名的新证书与其私钥匹配,私钥是在提升权限的系统上生成的。

  • 就绪情况检查器将使用系统的区域和外部域名(FQDN)来确定用于从现有证书中提取属性的终结点。 如果以下任一方案适用于你的方案,则必须使用本文顶部的 “选择 CSR 证书方案 选择器”,然后改为选择本文的新 部署 版本:
    • 想要更改终结点上的证书属性,例如主题、密钥长度和签名算法。
    • 你想要使用仅包含公用名属性的证书主题。
  • 在开始之前,请确认已建立 Azure Stack Hub 系统的 HTTPS 连接。

为续订证书生成 CSR

本部分介绍用于续订现有 Azure Stack Hub PKI 证书的 CSR 的准备。

生成 CSR

  1. 在安装了就绪情况检查器工具的计算机上打开 PowerShell 会话。

  2. 声明以下变量:

    注释

    就绪情况检查器使用 stampEndpoint 加上附加的字符串来查找现有证书。 例如, portal.east.azurestack.contoso.com 用于部署证书、 sso.appservices.east.azurestack.contoso.com 应用服务证书等。

    $regionName = 'east'                                            # The region name for your Azure Stack Hub deployment
    $externalFQDN = 'azurestack.contoso.com'                        # The external FQDN for your Azure Stack Hub deployment    
    $stampEndpoint = "$regionName.$externalFQDN"
    $outputDirectory = "$ENV:USERPROFILE\Documents\AzureStackCSR"   # Declare the path to an existing output directory
    
  3. 通过完成以下一个或多个步骤来生成 CSR:

    • 对于 生产环境,第一个脚本将为部署证书生成 CSR:

      New-AzsHubDeploymentCertificateSigningRequest -StampEndpoint $stampEndpoint -OutputRequestPath $OutputDirectory
      
    • 如果需要,第二个脚本会使用 -IncludeContainerRegistry,并在为部署证书生成 CSR 的同时,为 Azure 容器注册表生成 CSR。

      New-AzsHubDeploymentCertificateSigningRequest -StampEndpoint $stampEndpoint -OutputRequestPath $OutputDirectory -IncludeContainerRegistry
      
    • 第三个脚本将为已安装的任何可选 PaaS 服务生成 CSR:

      # App Services
      New-AzsHubAppServicesCertificateSigningRequest -StampEndpoint $stampEndpoint -OutputRequestPath $OutputDirectory
      
      # DBAdapter
      New-AzsHubDBAdapterCertificateSigningRequest -StampEndpoint $stampEndpoint -OutputRequestPath $OutputDirectory
      
      # EventHubs
      New-AzsHubEventHubsCertificateSigningRequest -StampEndpoint $stampEndpoint -OutputRequestPath $OutputDirectory
      
      # Azure Container Registry
      New-AzsHubAzureContainerRegistryCertificateSigningRequest -StampEndpoint $stampEndpoint -OutputRequestPath $OutputDirectory 
      
    • 对于 开发和测试环境,若要生成具有多个使用者可选名称的单个 CSR,请添加 -RequestType SingleCSR 参数和值。

      重要

      不建议将此方法用于生产环境。

      New-AzsHubDeploymentCertificateSigningRequest -StampEndpoint $stampEndpoint -OutputRequestPath $OutputDirectory -RequestType SingleCSR
      
  4. 查看输出:

    Querying StampEndpoint portal.east.azurestack.contoso.com for existing certificate
    Starting Certificate Request Process for Deployment
    CSR generating for following SAN(s): *.adminhosting.east.azurestack.contoso.com,*.adminvault.east.azurestack.contoso.com,*.blob.east.azurestack.contoso.com,*.hosting.east.azurestack.contoso.com,*.queue.east.azurestack.contoso.com,*.table.east.azurestack.contoso.com,*.vault.east.azurestack.contoso.com,adminmanagement.east.azurestack.contoso.com,adminportal.east.azurestack.contoso.com,management.east.azurestack.contoso.com,portal.east.azurestack.contoso.com
    Present this CSR to your certificate authority for certificate generation: C:\Users\username\Documents\AzureStackCSR\Deployment_east_azurestack_contoso_com_SingleCSR_CertRequest_20200710122723.req
    Certreq.exe output: CertReq: Request Created
    

准备就绪后,将生成的 .req 文件提交到证书授权机构(可以是内部或公共的)。 变量指定的 $outputDirectory 目录包含必须提交到 CA 的 CSR。 该目录还包含用于引用的子目录,其中包含在证书请求生成过程中要使用的 .inf 文件。 确保 CA 使用满足 Azure Stack Hub PKI 要求的生成的请求生成证书。

后续步骤

从证书颁发机构收到证书后,请遵循在同一系统上 准备 Azure Stack Hub PKI 证书 中的步骤。