为证书颁发机构创建Exchange Server证书请求
创建证书请求是在 Exchange 服务器上安装新证书,为一个或多个 Exchange 服务配置传输层安全性 (TLS) 加密的第一步。 使用证书请求(也称为证书签名请求或 CSR)从证书颁发机构 (CA) 获取证书。 从内部 CA (获取证书的过程相同,例如 Active Directory 证书服务) 或从商业 CA 获取证书。 创建证书请求后,将结果发送到 CA,CA 使用该信息颁发实际证书,稍后会安装该证书。
可以在 Exchange 管理中心 (EAC) 或 Exchange 命令行管理程序中创建证书请求。 EAC 中的 “新建 Exchange 证书 ”向导可帮助你选择证书中所需的主机名。
你必须先获得权限,然后才能执行此过程或多个过程。 有关所需权限的详细信息,请参阅 客户端和移动设备权限 一文中的“客户端访问服务安全性”条目。
估计完成时间:5 分钟即可完成新证书请求。 但是,在请求导致颁发证书之前,需要更多时间。 有关详细信息,请参阅后续步骤。
您需要经过认真规划,再选择需要的证书类型及证书中需要的主机名。 有关详细信息,请参阅 Exchange Server 中的数字证书和加密。
验证是否符合 CA 的证书请求要求。 Exchange 生成一个 PKCS #10 请求 (.req) 文件,该文件使用 Base64 (默认) 或 可辨别编码规则 (DER) 编码,其 RSA 公钥为 1024、2048 (默认) 或 4096 位。 编码和公钥选项仅在 Exchange 命令行管理程序中可用。 有关详细信息,请参阅 New-ExchangeCertificate。
在 EAC 中,需要将证书请求文件存储在 UNC 路径 (
\\<Server>\<Share>\
或\\<LocalServerName>\c$\
) 。 在 Exchange 命令行管理程序中,可以指定本地路径。若要了解如何在本地 Exchange 组织中打开 Exchange 命令行管理程序,请参阅 Open the Exchange Management Shell。
有关可能适用于本文中的过程的键盘快捷方式的详细信息,请参阅 Exchange 管理中心中的键盘快捷方式。
提示
是否有任何疑问? 请在 Exchange 论坛中寻求帮助。 请访问以下论坛:Exchange Server、Exchange Online 或 Exchange Online Protection。
备注
Exchange 管理员中心 (EAC) 可用于管理 Exchange Server 2019 CU15 及更高版本中的证书。 对于 Exchange Server 2016 CU23 和 Exchange Server 2019 CU12 到 CU14,请使用 Exchange 命令行管理程序 (EMS) 过程。
打开 EAC 并导航到 “服务器>证书”。
在 “选择服务器” 下拉列表中,选择要在其中安装证书的 Exchange 服务器,然后选择“ 添加
。
“新建 Exchange 证书”向导打开。
在“ 此向导将创建新证书或证书请求文件 ”页上,验证是否已选择“ 从证书颁发机构创建证书请求 ”,然后选择“ 下一步”。
备注
若要创建新的自签名证书,请参阅创建新的Exchange Server自签名证书。
在此 证书的“友好名称 ”页上,输入证书的描述性名称,然后选择“ 下一步”。
在“申请通配符证书”页面上,选择下列选项之一:
- 如果需要通配符证书:选择“ 请求通配符证书”,然后在“ 根 域”框中输入通配符 (*) 和域,例如 *.contoso.com 或 *.eu.contoso.com。 完成后,请选择“下一步”。
- 如果想要 (SAN) 证书的使用者可选名称:不要在此页上选择,然后选择“ 下一步”。
- 如果需要单个主机的证书:在此页上不进行任何选择,然后选择“ 下一步”。
在“ 在此服务器上存储证书请求 ”页上,选择“ 浏览 ”,然后选择要在其中存储证书请求的 Exchange 服务器, (要在其中安装证书) 。 然后,选择“ 确定 ”和“ 下一步”。
备注
步骤 7 和 8 仅适用于 SAN 证书或单个主机的证书请求。 如果选择了 “请求通配符证书”,请跳到步骤 9。
此时会显示 “指定要包含在证书中的域 ”页。 此页基本上是一个工作表,可帮助你确定以下 Exchange 服务的证书中所需的内部和外部主机名:
- Outlook 网页版
- 脱机通讯簿生成 (OAB)
- Exchange Web 服务
- Exchange ActiveSync
- 自动发现
- 流行
- IMAP
- Outlook Anywhere
根据内部或外部) 的位置 (为每个服务输入一个值。 然后,向导确定证书中所需的主机名,并且信息将显示在下一页上。
如果要修改服务的值,请选择 “编辑 ” (
) 并输入要使用的主机名值, (或删除) 的值。 完成后,请选择“下一步”。
备注
如果您已经确定了证书中所需的主机名的值,则您无需在此页上填写信息。 而是选择“ 下一步 ”,在下一页上手动输入主机名。
将显示“根据你的选择,以下域将包含在证书”页中。 此页列出将包含在证书请求中的主机名。 证书的 “使用者 ”框中使用的主机名是粗体,很难看出是否选择了该主机名。
通过引用在上一页上所做的选择来验证证书中所需的主机名条目。
如果不想考虑此主机名列表以包含在证书请求中,请转到步骤 10。
通过执行以下步骤,忽略最后一页中的值并添加、编辑或删除主机名值:a。 如果需要 SAN 证书:若要选择证书的“使用者”字段的主机名,请选择值,然后选择“设置为公用名” (检查 标记) 。 此时值应以粗体显示。 b. 如果需要单个主机名的证书:一次选择其他值一个,然后选择 “删除 (
) 。
备注
无法删除将用于证书的 “使用者 ”框的加粗主机名值。 首先,需要选择或添加其他主机名,然后检查“设为公用名”框。 如果选择“ 后退 ”按钮,则在此页上所做的更改可能会丢失。
在“指定有关你组织的信息”页面,输入以下值:
- 组织名称
- 部门名称
- 市/位置
- 省/市/自治区
- 国家/地区名称
备注
这些 X.500 值包含在证书的 “使用者 ”框中。 尽管在继续作之前,每个字段中都需要一个值,但 CA 可能不关心某些字段 (例如“部门名称) ”,而其他字段 (重要,例如“国家/地区名称和组织名称) ”。 检查 CA 的 “主题 ”框要求。
完成后,请选择“下一步”。
在 “将证书请求保存到以下文件 ”页上,输入证书请求的 UNC 路径和文件名,
\\FileServer01\Data\ExchCertRequest.req
例如 。 完成后,选择“ 完成”。
The certificate request appears in the list of Exchange certificates with a status value of Pending. 有关后续步骤的详细信息,请参阅 后续步骤 部分。
若要为通配符证书、SAN 证书或单个主机创建证书的新请求,请使用以下语法:
如果需要将证书请求文件 的内容 发送到 CA,请使用以下语法创建 Base64 编码的请求文件:
$txtrequest = New-ExchangeCertificate -PrivateKeyExportable $True -GenerateRequest [-FriendlyName <DescriptiveName>] -SubjectName C=<CountryOrRegion>[,S=<StateOrProvince>,L=<LocalityOrCity>,O=<Organization>,OU=<Department>],CN=<HostNameOrFQDN> [-DomainName <Host1>,<Host2>...] [-KeySize <1024 | 2048 | 4096>] [-Server <ServerIdentity>] [System.IO.File]::WriteAllBytes('<FilePathOrUNCPath>\<FileName>.req', [System.Text.Encoding]::Unicode.GetBytes($txtrequest))
如果需要将 证书请求文件 发送到 CA,请使用以下语法创建 DER 编码的请求文件:
$binrequest = New-ExchangeCertificate -PrivateKeyExportable $True -GenerateRequest -BinaryEncoded [-FriendlyName <DescriptiveName>] -SubjectName C=<CountryOrRegion>[,S=<StateOrProvince>,L=<LocalityOrCity>,O=<Organization>,OU=<Department>],CN=<HostNameOrFQDN> [-DomainName <Host1>,<Host2>...] [-KeySize <1024 | 2048 | 4096>] [-Server <ServerIdentity>] [System.IO.File]::WriteAllBytes('<FilePathOrUNCPath>\<FileName>.pfx', $binrequest.FileData)
备注
(证书的“使用者”框) 运行命令,X.500 SubjectName 参数值的唯一必需部分是 CN=<HostNameOrFQDN>
。 但是,应始终包含 C=<CountryOrRegion>
值。 否则,可能无法续订证书。 检查 CA 的 “主题 ”框要求。
如果不使用 KeySize 参数,则证书请求具有 2048 位 RSA 公钥。
如果不使用 Server 参数,则命令将在本地 Exchange 服务器上运行。
有关语法和参数的详细信息,请参阅 New-ExchangeCertificate。
这些示例使用以下属性为通配符证书创建证书请求文件:
-
SubjectName:美国 中的 *.contoso.com,需要值
C=US,CN=*.contoso.com
。 -
RequestFile:
\\FileServer01\Data\Contoso Wildcard Cert.<cer or pfx>
- FriendlyName:Contoso.com 通配符证书
若要为通配符证书创建 Base64 编码的请求文件,请运行以下命令:
$txtrequest = New-ExchangeCertificate -PrivateKeyExportable $True -GenerateRequest -FriendlyName "Contoso.com Wildcard Cert" -SubjectName "C=US,CN=*.contoso.com"
[System.IO.File]::WriteAllBytes('\\FileServer01\Data\Contoso Wildcard Cert.req', [System.Text.Encoding]::Unicode.GetBytes($txtrequest))
若要为通配符证书创建 DER 编码的请求文件,请运行以下命令:
$binrequest = New-ExchangeCertificate -PrivateKeyExportable $True -GenerateRequest -BinaryEncoded -FriendlyName "Contoso.com Wildcard Cert" -SubjectName "C=US,CN=*.contoso.com"
[System.IO.File]::WriteAllBytes('\\FileServer01\Data\Contoso Wildcard Cert.pfx', $binrequest.FileData)
这些示例使用以下属性为 SAN 证书创建证书请求文件:
-
SubjectName:美国中的 mail.contoso.com,需要值
C=US,CN=mail.contoso.com
。 此 CN 值自动包含在 DomainName 参数中, (“使用者可选名称” 字段) 。 - 其他 使用者可选名称 字段值:
- autodiscover.contoso.com
- legacy.contoso.com
- mail.contoso.net
- autodiscover.contoso.net
- legacy.contoso.net
-
RequestFile:
\\FileServer01\Data\Contoso SAN Cert.<cer or pfx>
- FriendlyName:Contoso.com SAN Cert
- DomainName:未带引号的逗号分隔的域列表
若要为 SAN 证书创建 Base64 编码的请求文件,请运行以下命令:
$txtrequest = New-ExchangeCertificate -PrivateKeyExportable $True -GenerateRequest -FriendlyName "Contoso.com SAN Cert" -SubjectName "C=US,CN=mail.contoso.com" -DomainName autodiscover.contoso.com,legacy.contoso.com,mail.contoso.net,autodiscover.contoso.net,legacy.contoso.net
[System.IO.File]::WriteAllBytes('\\FileServer01\Data\Contoso SAN Cert.req', [System.Text.Encoding]::Unicode.GetBytes($txtrequest))
若要为 SAN 证书创建 DER 编码请求文件,请运行以下命令:
$binrequest = New-ExchangeCertificate -PrivateKeyExportable $True -GenerateRequest -BinaryEncoded -FriendlyName "Contoso.com SAN Cert" -SubjectName "C=US,CN=mail.contoso.com" -DomainName autodiscover.contoso.com,legacy.contoso.com,mail.contoso.net,autodiscover.contoso.net,legacy.contoso.net
[System.IO.File]::WriteAllBytes('\\FileServer01\Data\Contoso SAN Cert.pfx', $binrequest.FileData)
这些示例为具有以下属性的单一使用者证书创建证书请求文件:
-
SubjectName:美国中的 mail.contoso.com,需要值
C=US,CN=mail.contoso.com
。 -
RequestFile:
\\FileServer01\Data\Mail.contoso.com Cert.<cer or pfx>
- FriendlyName:Mail.contoso.com 证书
若要为单一使用者证书创建 Base64 编码请求文件,请运行以下命令:
$txtrequest = New-ExchangeCertificate -PrivateKeyExportable $True -GenerateRequest -FriendlyName "Mail.contoso.com Cert" -SubjectName "C=US,CN=mail.contoso.com"
[System.IO.File]::WriteAllBytes('\\FileServer01\Data\Mail.contoso.com Cert.req', [System.Text.Encoding]::Unicode.GetBytes($txtrequest))
若要为单一使用者证书创建 DER 编码请求文件,请运行以下命令:
$binrequest = New-ExchangeCertificate -PrivateKeyExportable $True -GenerateRequest -BinaryEncoded -FriendlyName "Mail.contoso.com Cert" -SubjectName "C=US,CN=mail.contoso.com"
[System.IO.File]::WriteAllBytes('\\FileServer01\Data\Mail.contoso.com Cert.pfx', $binrequest.FileData)
若要验证是否已成功创建新的证书请求,请执行以下步骤之一:
在 “服务器>证书”处的 EAC 中,验证是否选择了存储证书请求的服务器。 请求应位于证书列表中, 其 Status 参数的值设置为 “挂起请求”。
在用于存储证书请求的服务器上的 Exchange 命令行管理程序 中,运行以下命令:
Get-ExchangeCertificate | where {$_.Status -eq "PendingRequest" -and $_.IsSelfSigned -eq $false} | Format-List FriendlyName,Subject,CertificateDomains,Thumbprint
Base64 编码证书请求文件的内容如下所示:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIEBjCCAu4CAQAwYzEWMBQGA1UEAwwNKi5jb250b3NvLmNvbTELMAkGA1UECwwC
SVQxEDAOBgNVBAoMB0NvbnRvc28xEDAOBgNVBAcMB1NlYXR0bGUxCzAJBgNVBAgM
AldBMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
ANZFK6JxcQMEBitJcEC82vCvr6251o28CMmrpIkl7Z0MnkCrU+BMTLBuZnIgaLvb
jlzORvH6DP/dbyR8gQEAHVrXVWdr3AJIRbqQXWwN++BM5b2O6lIrA8w41XwGNu6r
dtddi+POf8UYwot7PXw6wDsbKaTs1ePVK/0XdemdJCFIXNfCT8LY4p/KryQAyquo
XDa+Acbx7TRxG2kXNAxgPGve+mvyCyizbugXAJIz4nugJ2k/X1kGYDc7f/b80tCv
bPTcGCr09ScsbKmsQcqJ7UxiX2tScpO5AQxNxJHGL+bA6+96FBjPnFZaqPbFgI74
N6hmZdSEDgQlaGfLEGjZBGMCAwEAAaCCAVwwGgYKKwYBBAGCNw0CAzEMFgo2LjEu
NzYwMS4yMEwGCSqGSIb3DQEJDjE/MD0wDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB
/wQCMAAwHQYDVR0OBBYEFNRw1o74zcuGyky33rl7WChgdQrlMHIGCisGAQQBgjcN
AgIxZDBiAgEBHloATQBpAGMAcgBvAHMAbwBmAHQAIABSAFMAQQAgAFMAQwBoAGEA
bgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkA
ZABlAHIDAQAwfAYJKwYBBAGCNxUUMW8wbQIBBQwrRVhIUi0zMjQ4LkVYSFItMzI0
OGRvbS5leHRlc3QubWljcm9zb2Z0LmNvbQwXRVhIUi0zMjQ4RE9NXEVYSFItMzI0
OCQMIk1pY3Jvc29mdC5FeGNoYW5nZS5TZXJ2aWNlSG9zdC5leGUwDQYJKoZIhvcN
AQEFBQADggEBAL63qVj1m2mBz53+nilnlFweOlcltXoxaF28+Kf0hrJVbH5a2Jme
tS0iKU8YXU3mZ3NnWco+5ea024f9awMIzg4z/heE5yEUFf9UtwRGSOc84r2QexPa
zT/rveTTcbliKU0EFhporl3C2uuBCdAewyLj+/k0hABH3djnmMONG6NyC5f+wMun
kkH5naiSLdsTYbq8jkWYuSqL0qdhtmauqWeAPpA0hKDkQk5eDWpOGx3mgxiaQumo
Rqw6dmQ+o8TC+lE3Tvgdfv47A84X8H7Y9h8liS4h0OfbsgEQb8LcM0YHD6yvPgcD
JCmt8A7JFHF9u6mghjiKlXaZ/i+2l10Wsu8=
-----END NEW CERTIFICATE REQUEST-----
您需要将此信息发送到 CA。 发送方式取决于 CA,但通常以电子邮件或 CA 网站上的证书请求表单的形式发送文件内容。
如果 CA 需要由 DER 编码的二进制证书请求(您使用了带 BinaryEncoded 开关的 New-ExchangeCertificate cmdlet),通常您应将整个证书请求文件发送到 CA。
从 CA 收到证书后,您需要完成待处理的证书请求。 有关详细信息,请参阅完成挂起的Exchange Server证书请求。