bg-tutorials

如何在 Microsoft Exchange 中生成 CSR

本指南将向您展示如何在 Microsoft Exchange Server 中生成 CSR(证书签名请求)。内容涵盖当前发行版本(Exchange Server Subscription Edition 和 Exchange 2019 CU15+),使用 PowerShell 和 Exchange 管理中心两种方式;也涵盖 Exchange 2016(CU23+)和 Exchange 2019 CU12 至 CU14 中仅支持 PowerShell 的方式;以及针对旧版 Exchange 2013、2010、2007 和 2003 的存档参考步骤。

本教程仅适用于本地部署的 Microsoft Exchange Server。如果您使用 Microsoft 365 中的Exchange Online,则不需要生成 CSR:您的 *.mail.protection.outlook.com 和 *.outlook.com 端点的 TLS 由 Microsoft 管理,无法替换为第三方证书。

我应该使用哪种方法?

Exchange 在不同版本中处理证书管理的方式不同。Microsoft 在 Exchange 2016 CU23(2021 年 9 月)和 Exchange 2019 CU12(2022 年 4 月)中移除了 Exchange 管理中心(EAC)的证书选项,随后在 Exchange 2019 CU15(2025 年 2 月)和 Exchange Server Subscription Edition(于 2025 年 7 月 1 日发布)中将其恢复。开始操作前,请先检查您的版本和 CU。

要查看您的版本号,请在 Exchange Management Shell 中运行以下命令:

Get-ExchangeServer | Format-List Name,AdminDisplayVersion
Exchange 版本CSR 方法备注
Exchange Server SE(2025+)EAC 或 PowerShell当前产品版本,代码与 2019 CU15 相同。
Exchange 2019 CU15EAC 或 PowerShell2019 系列的最终 CU 版本,EAC 证书向导已恢复。
Exchange 2019 CU12 至 CU14仅支持 PowerShellEAC 证书选项已被 KB5014278 移除。
Exchange 2016 CU23+仅支持 PowerShellEAC 证书选项已移除;自 2025 年 10 月 14 日起不再获得主流支持。
Exchange 2013EAC 或 PowerShell已停止支持(2023 年 4 月 11 日)。请尽快迁移。
Exchange 2010、2007、2003旧版 GUI / shell早已停止支持,仅供存档参考。

请选择下方与您的版本对应的章节:

在 Exchange Server SE、Exchange 2019 和 Exchange 2016 上生成 CSR

下方的 PowerShell 方法适用于从 Exchange 2013 到 Exchange Server SE 的所有受支持版本,并且是 Exchange 2016(CU23+)和 Exchange 2019 CU12 至 CU14 上唯一受支持的方法。在 Exchange Server SE 和 Exchange 2019 CU15+ 上,您也可以使用 EAC 向导,相关内容在 PowerShell 流程之后介绍。

方法一:PowerShell(Exchange Management Shell)

在将持有私钥的 Exchange 服务器上,以管理员身份打开Exchange Management Shell。使用 -GenerateRequest 运行 New-ExchangeCertificate cmdlet,然后使用 Set-Content 将返回的 CSR 文本保存到文件中。这种两步操作是必需的,因为 Microsoft 在 Exchange 2016 CU23 和 Exchange 2019 CU12(安全更新 KB5014278)中从该 cmdlet 中移除了 -RequestFile 参数。直接传递 -RequestFile-Path 的旧版指南在当前版本上将会失败。

New-ExchangeCertificate `
  -GenerateRequest `
  -SubjectName "C=US, S=California, L=San Francisco, O=Example Inc, OU=IT, CN=mail.example.com" `
  -DomainName mail.example.com, autodiscover.example.com `
  -KeySize 2048 `
  -PrivateKeyExportable $true `
  | Set-Content -Path "C:certsexchange.req"

请根据您的环境修改以下值:

  • C 是两字母国家代码(US、GB、DE 等)。
  • S 是州或省的完整名称(请勿使用缩写)。
  • L 是城市或地区的完整名称。
  • O 是合法注册的公司名称。
  • OU 是部门名称,通常为“IT”。此字段为可选项。
  • CN 是证书要保护的主要完全限定主机名,例如 mail.example.com
  • -DomainName 是以逗号分隔的列表,包含证书必须覆盖的所有主机名(主题备用名称)。对于典型的 Exchange 部署,至少应列出 mail.example.comautodiscover.example.com。还应添加客户端使用的其他名称:webmail、owa、EWS 主机、混合部署主机名等。
  • -KeySize 2048 符合 CA/Browser Forum 的基线要求。仅当您的策略要求时,才使用 3072 或 4096。
  • -PrivateKeyExportable $true 使您以后可以导出密钥用于备份,或用于同一 DAG 中的其他 Exchange 节点。

通配符证书。对于通配符证书,请将 CN 和某个 DomainName 条目设置为通配符模式,例如 CN=*.example.com-DomainName *.example.com,example.com。请注意,某些 Exchange 功能(尤其是旧版本上的 Outlook Anywhere)历来对通配符存在限制;对于生产环境,我们建议使用明确列出每个主机名的多域(SAN)证书。

cmdlet 运行完成后,在记事本中打开保存的文件,确认其看起来像是标准的 PEM 格式 CSR:

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIC6TCCAdECAQAwgaMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
...
-----END NEW CERTIFICATE REQUEST-----

复制整个代码块,包括BEGINEND这两行(每边各五个连字符),然后将其粘贴到您的 SSL 订单的 CSR 字段中。如果您想在提交前解码并检查 CSR,可以使用我们的CSR 解码器,确认通用名称、SAN 和密钥长度是否正确。

在您使用签发的证书完成请求之前,待处理的请求会保留在此 Exchange 服务器上。使用以下命令列出待处理请求:

Get-ExchangeCertificate | Where-Object {$_.Status -eq "PendingRequest"} | Format-List FriendlyName,Thumbprint,Subject

方法二:Exchange 管理中心(仅适用于 Exchange Server SE 和 2019 CU15+)

EAC 证书向导已在 Exchange Server SE 和 Exchange 2019 CU15 上重新可用。如果您使用的是 Exchange 2016(CU23 及以后的任何 CU)、Exchange 2019 CU12、CU13 或 CU14,则该向导不存在:请改用上面的 PowerShell 方法。

  • 使用具有组织管理角色的账户登录 EAC,地址为 https://<exchange-server>/ecp
  • 转到服务器 > 证书
  • 选择服务器下拉列表中,选择将持有私钥的 Exchange 服务器。
  • 点击+按钮以启动新建 Exchange 证书向导。
  • 选择创建向证书颁发机构申请证书的请求,然后点击下一步
  • 输入一个便于日后识别该证书的友好名称,例如 mail.example.com 2026。这仅是一个标签。
  • 如需通配符证书,请勾选请求通配符证书并输入根域名(例如 example.com)。如需标准证书或多域(SAN)证书,请不要勾选此框,然后点击下一步
  • 点击浏览并选择应存储证书请求的 Exchange 服务器,然后点击下一步
  • 如果您没有请求通配符证书,请选择证书要保护的服务(OWA、ECP、Outlook Anywhere、OAB、Autodiscover、POP、IMAP),然后点击下一步。Exchange 将据此建议 SAN 列表。
  • 查看主机名列表,使用+和减号按钮添加或删除名称,并确认主要通用名称。点击下一步
  • 填写您的组织详细信息:合法组织名称、部门、国家/地区、城市以及州或省。请使用完整拼写(不要使用缩写)。
  • 将证书请求保存到以下文件下,输入您日后可以访问的路径,例如 \exch01c$certsexchange.req,然后点击完成
  • 在记事本中打开保存的 .req 文件,复制包括 —–BEGIN NEW CERTIFICATE REQUEST—–—–END NEW CERTIFICATE REQUEST—– 标记的全部文本,并将其粘贴到您的 CA 的订单表单中。

CA 签发证书后,返回服务器 > 证书,选择待处理请求,然后点击完成。按照我们的Exchange SSL 安装指南中的步骤完成安装并分配服务。

在 Exchange 2013 上生成 CSR(旧版)

旧版提示:Exchange 2013 已于 2023 年 4 月 11 日停止支持,不再接收安全更新。请规划迁移到 Exchange Server SE。以下步骤仅供存档参考。

  • 打开 https://<server>/ecp 处的 EAC 并登录。
  • 转到服务器 > 证书,并在下拉列表中选择目标服务器。
  • 点击+图标启动新建 Exchange 证书向导。
  • 选择创建向证书颁发机构申请证书的请求,点击下一步
  • 输入友好名称,然后点击下一步
  • 如需通配符证书,请勾选通配符框并输入根域名(例如 *.example.com);否则请不要勾选。点击下一步
  • 点击浏览并选择应存储私钥的服务器,然后点击下一步
  • 选择证书要保护的 Exchange 服务(OWA、ECP、Outlook Anywhere、Autodiscover、SMTP、POP、IMAP),然后点击下一步
  • 查看 SAN 列表,使用+添加缺失的主机名,删除不需要的条目,然后点击下一步
  • 填写组织详细信息(合法名称、部门、国家、城市、州),然后点击下一步
  • 输入应保存 .req 文件的 UNC 路径(例如 \exch01c$certsexchange.req),然后点击完成
  • 在记事本中打开该文件,并将整个代码块(包括 BEGIN 和 END 这两行)复制到您 CA 的 CSR 字段中。

签发的证书到达后,在同一个证书界面中完成待处理请求,然后继续安装。

在 Exchange 2010 上生成 CSR(旧版)

旧版提示:Exchange 2010 已于 2020 年 10 月 13 日停止扩展支持。它不再接收安全更新,不应用于面向公众的服务。这里保留相关步骤仅供维护隔离内部系统的团队参考。

  • 开始 > 所有程序 > Microsoft Exchange Server 2010 启动Exchange 管理控制台
  • 在左侧树状目录中,展开Microsoft Exchange 本地部署并点击服务器配置
  • 在右侧的操作窗格中,点击新建 Exchange 证书
  • 简介界面中,输入友好名称,然后点击下一步
  • 域范围中,对于标准证书请保持通配符框未选中;对于通配符证书,请勾选并输入根域名(例如 *.example.com),然后点击下一步
  • Exchange 配置下,选择应受保护的服务(OWA、Outlook Anywhere、Autodiscover、POP、IMAP、SMTP、统一消息),然后点击下一步
  • 证书域中,添加通用名称(主要 FQDN),点击设置为通用名称,然后点击下一步
  • 填写组织和位置详细信息:完整的合法组织名称、部门、国家、城市和州,然后点击浏览并为 .req 文件选择保存位置和文件名。点击保存,然后依次点击下一步新建完成
  • 用记事本打开保存的文件,将全部内容(包括 —–BEGIN NEW CERTIFICATE REQUEST—–—–END NEW CERTIFICATE REQUEST—– 这两行)复制到您 CA 的订单表单中。

CA 签发证书后,返回 Exchange 管理控制台完成待处理请求。

在 Exchange 2007 上生成 CSR(旧版)

旧版提示:Exchange 2007 已于 2017 年 4 月 11 日停止扩展支持。以下步骤仅供存档参考。

  • 打开开始 > 所有程序 > Microsoft Exchange Server 2007 > Exchange Management Shell
  • 在记事本中修改下方 cmdlet,然后将其粘贴到 shell 中。将示例主题值替换为您真实的组织详细信息和需要保护的主机名。
New-ExchangeCertificate `
  -GenerateRequest `
  -SubjectName "C=US, S=California, L=San Francisco, O=Example Inc, OU=IT, CN=mail.example.com" `
  -DomainName mail.example.com, autodiscover.example.com `
  -KeySize 2048 `
  -PrivateKeyExportable $true `
  -Path C:certsexchange.req

在 Exchange 2007 上,原始的 -Path 参数仍然有效(KB5014278 中的 UNC 路径限制仅适用于 Exchange 2016 和 2019)。请按照上面现代 PowerShell 部分相同的方式编辑主题字段:

  • CSLOOUCN遵循标准的 X.509 主题惯例。
  • -DomainName 接受以逗号分隔的 SAN 列表。对于通配符证书,请使用 *.example.com
  • -KeySize 2048 是公共 CA 接受的最小密钥长度。
  • -PrivateKeyExportable $true 使您以后可以导出证书和密钥。
  • -Path 是将写入 CSR 的本地文件。

cmdlet 完成后,在记事本中打开该文件,并将完整的 PEM 代码块(包括每边各五个连字符的 BEGIN 和 END 这两行)复制到您 CA 的 CSR 字段中。

在 Exchange 2003 上生成 CSR(旧版)

旧版提示:Exchange 2003 已于 2014 年 4 月 8 日停止扩展支持。它不适用于任何面向公众的基础设施,而且现代公共 CA 可能拒绝签发 2003 时代客户端能够验证的 SHA-256 证书。请尽快迁移。

Exchange 2003 本身没有包含证书请求工具。CSR 的生成由底层的 IIS 6 Web 服务器处理,然后通过 Exchange 系统管理器将签发的证书绑定到 Exchange 虚拟协议服务器(SMTP、POP3、IMAP4)上。请参照我们的配套指南如何在 Microsoft IIS 中生成 CSR(IIS 6 部分)生成请求,然后返回您的 CA 订购证书。

提交前验证您的 CSR

在将 CSR 粘贴到订单表单之前,请先解码它以确认信息正确。通用名称中的拼写错误、缺失的 SAN 或过短的密钥长度都会导致订单被拒绝,或迫使您日后免费重新签发。将您的 CSR 粘贴到我们的CSR 解码器中,即可查看通用名称、完整的 SAN 列表、组织、国家、签名算法和密钥长度。

CA 验证请求并签发证书后,请继续参照我们的分步Exchange SSL 安装指南,导入证书并将其分配给 IIS、SMTP 以及您运行的其他任何服务。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.