为 Azure Stack Hub 生成证书签名请求
使用 Azure Stack Hub 就绪性检查器工具创建适合于 Azure Stack Hub 部署或现有部署的证书续订的证书签名请求 (CSR)。 在部署证书之前,请务必请求、生成并验证证书,以便有足够的准备时间对证书进行测试。
该工具用于根据本文顶部的“选择 CSR 证书场景”选择器请求以下证书:
- 新部署的标准证书:使用本文顶部的“选择 CSR 证书场景”选择器选择“新部署”。
- 现有部署的续订证书:使用本文顶部的“选择 CSR 证书场景”选择器选择“续订”。
- 平台即服务 (PaaS) 证书:可以选择使用标准证书和续订证书生成。 有关更多详细信息,请参阅 Azure Stack Hub 公钥基础结构 (PKI) 证书要求 - 可选 PaaS 证书。
先决条件
在为 Azure Stack Hub 部署生成 PKI 证书的 CSR 之前,系统必须符合以下先决条件:
- 计算机上必须安装有 Windows 10 或更高版本,或 Windows Server 2016 或更高版本。
- 在 PowerShell 提示符(5.1 或更高版本)下,通过运行以下 cmdlet 来安装 Azure Stack Hub 就绪性检查器工具:
Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
- 证书需要以下属性:
- 区域名称
- 外部完全限定的域名 (FQDN)
- 主题
为新的部署证书生成 CSR
注意
生成证书签名请求需要特权提升。 在不可能进行特权提升的受限环境中,你可以使用此工具来生成明文模板文件,其中包含 Azure Stack Hub 外部证书所需的所有信息。 然后需要在特权提升的会话上使用这些模板文件来完成公钥/私钥对生成。 有关详细信息,请参阅下文。
若要为新的 Azure Stack Hub PKI 证书准备 CSR,请完成以下步骤:
在安装了就绪性检查器工具的计算机上打开 PowerShell 会话。
声明以下变量:
注意
<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 字段。
声明一个使用者,例如:
$subject = "C=US,ST=Washington,L=Redmond,O=Microsoft,OU=Azure Stack Hub"
通过完成以下操作之一生成 CSR:
对于生产部署环境,第一个脚本将为部署证书生成 CSR:
New-AzsHubDeploymentCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subject -OutputRequestPath $OutputDirectory -IdentitySystem $IdentitySystem
第二个脚本可以在需要的情况下使用
-IncludeContainerRegistry
,同时为 Azure 容器注册表生成 CSR,作为部署证书的 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
完成最后的步骤:
查看输出:
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
如果使用了
-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
在安装了就绪性检查器工具的计算机上打开 PowerShell 会话。
声明以下变量:
注意
就绪性检查器使用
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
通过完成以下一项或多项操作来生成 CSR:
对于生产环境,第一个脚本将为部署证书生成 CSR:
New-AzsHubDeploymentCertificateSigningRequest -StampEndpoint $stampEndpoint -OutputRequestPath $OutputDirectory
第二个脚本可以在需要的情况下使用
-IncludeContainerRegistry
,同时为 Azure 容器注册表生成 CSR,作为部署证书的 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
查看输出:
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 文件提交给 CA(内部或公共)。 由 $outputDirectory
变量指定的目录包含必须提交给 CA 的 CSR。 此目录还包含一个子目录,其中包含生成证书请求期间使用的 .inf 文件,供你参考。 请确保 CA 使用符合 Azure Stack Hub PKI 要求的生成请求来生成证书。
后续步骤
从证书颁发机构收到证书后,请在同一个系统上遵循准备 Azure Stack Hub PKI 证书中的步骤。