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.com 和 autodiscover.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-----

复制整个代码块,包括BEGIN和END这两行(每边各五个连字符),然后将其粘贴到您的 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 部分相同的方式编辑主题字段:

  • C、S、L、O、OU和CN遵循标准的 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 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.