Exchange  Server  2019  部署SSL证书避坑指南

部署  Exchange  Server  2019  的  SSL证书看似是一个标准化流程,但实际操作中存在多个容易被忽视的“坑”。本指南聚焦证书选型、申请/导入/分配各环节的常见问题,以及证书续订时的关键陷阱。

一、证书类型选择:SAN  证书是唯一推荐

1.1  为什么必须用  SAN  证书?

Exchange  Server  需要同时保护多个域名,包括:

  `mail.yourdomain.com`(邮件访问)

  `autodiscover.yourdomain.com`(Outlook  自动配置)

  `exchange.yourdomain.local`(内部域名,可选)

  `remote.yourdomain.local`(VPN/RDP  访问,可选)

SAN(Subject  Alternative  Name)证书可以在同一张证书中列出所有这些域名。这是微软官方推荐的做法。

1.2  通配符证书能用吗?——  有坑

通配符证书(`*.domain.com`)技术上可以使用,但存在以下限制:

不能同时保护不同基域:通配符只能保护单一域下的子域,无法同时覆盖  `domain.com`  和  `domain.net`

POP/IMAP  服务可能有兼容性问题:在  Exchange  2010  上通配符证书对  POP/IMAP  存在问题,虽然后续版本有所改进,但仍是潜在风险

无法将通配符与多域名混合使用:Exchange  不支持在通配符证书中额外添加特定域名

避坑建议:请直接采购  **SAN/UCC  多域名证书**,而非通配符证书。SAN  证书是  Exchange  的标准配置。

二、证书申请:EAC  已不可用,必须用  PowerShell

2.1  最大的坑:Exchange  2019  CU12  之后  EAC  不再支持生成  CSR

从  Exchange  2019  CU12(及后续  CU13)开始,微软已**移除了通过  Exchange  管理中心  (EAC)  生成证书申请  (CSR)  的选项**。EAC  现在仅支持创建自签名证书。

许多管理员仍试图在  EAC  中寻找“创建证书申请”选项,发现找不到后产生困惑。

2.2  正确的  CSR  生成命令

必须在  Exchange  Management  Shell  中以管理员身份执行以下命令:

powershell

New-ExchangeCertificate  -GenerateRequest  -SubjectName  "C=CN,  S=Beijing,  L=Beijing,  O=YourCompany,  OU=IT,  CN=mail.yourdomain.com"  -DomainName  mail.yourdomain.com,  autodiscover.yourdomain.com  -KeySize  2048  -PrivateKeyExportable  $true  -Path  "C:\Cert\exchange.csr"

参数说明:

  `-PrivateKeyExportable  $true`:务必保留,否则后续无法导出私钥进行备份或多服务器导入

  `-KeySize  2048`:建议使用  2048  位,兼容性和安全性最佳

  `-DomainName`:至少包含邮件主域名和  autodiscover  域名

避坑提醒:生成的  `.req`  文件需要用记事本打开,**完整复制**  `-----BEGIN  NEW  CERTIFICATE  REQUEST-----`  到  `-----END  NEW  CERTIFICATE  REQUEST-----`  的全部内容提交给  CA。中间缺任何一行都会导致  CA  解析失败。

三、证书导入与分配:最容易出错的环节

3.1  证书文件格式:PFX  vs  CRT

CRT  文件:仅包含证书公钥,不含私钥。直接将  CRT  导入  Exchange  会导致证书无法使用

PFX/P12  文件:包含证书  +  私钥,是  Exchange  导入的正确格式

避坑建议:从  CA  下载证书时,务必下载  PFX  格式(或  IIS  格式)。如果只能下载  CRT,需要在生成  CSR  的同一台服务器上通过  MMC  导入并导出为  PFX。

3.2  导入命令

powershell

Import-ExchangeCertificate  -FileData  ([System.IO.File]::ReadAllBytes('\\server\share\certificate.pfx'))  -Password  (ConvertTo-SecureString  -String  'YourPassword'  -AsPlainText  -Force)

多服务器环境:必须在每台  Exchange  服务器上分别导入证书,不能只在一台服务器上导入。

3.3  分配服务:这是最常被忽略的一步

导入证书不等于启用证书。CA  签发的证书导入后,默认并未分配任何  Exchange  服务,此时  Exchange  仍会使用自签名证书响应客户端请求。

powershell

#  查看当前证书状态

Get-ExchangeCertificate  |  Select  Thumbprint,  Services,  Subject,  NotAfter

#  启用证书并分配服务

Enable-ExchangeCertificate  -Thumbprint  "<Thumbprint>"  -Services  IIS,SMTP

服务选项包括:`IIS`(OWA/ECP/ActiveSync  等)、`SMTP`、`POP`、`IMAP`。根据实际需要选择。

避坑提醒:执行  `Enable-ExchangeCertificate`  后,建议重启  Microsoft  Exchange  Transport  服务,否则  SMTP  服务可能无法立即识别新证书。

3.4  中间证书链缺失

CA  签发的证书通常需要配合中间  CA  证书才能被客户端信任。如果中间证书未安装,客户端浏览器/Outlook  会报告“证书不受信任”。

解决方案:在导入  PFX  之前(或之后),通过  MMC  将中间  CA  证书安装到“中间证书颁发机构”存储中。部分  CA  的  PFX  已包含完整链,但建议手动验证。

四、常见问题与排查

4.1  外部访问仍显示自签名证书

现象:已导入  CA  证书,但  OpenSSL  测试或浏览器仍显示自签名证书。

原因:证书未正确分配给  Exchange  服务,自签名证书仍处于活跃状态。

解决方案:执行上述  `Enable-ExchangeCertificate`  命令。如需彻底清除自签名证书的干扰,可考虑禁用或删除自签名证书(需谨慎操作)。

4.2  证书续订后服务无法启动

现象:续订证书并导入后,Microsoft  Exchange  Transport  等服务启动失败。

根源分析:管理员完成了证书导入和分配,但服务的配置仍指向旧证书的  Thumbprint(指纹)。即使新证书处于“已启用”状态,服务也无法加载有效凭证。

排查步骤:

1.  检查  Application  Event  Log  中的错误事件(事件  ID  12014、4999、3024  等)

2.  确认新证书的  Services  列是否包含  IIS、SMTP  等

3.  确认  IIS  站点绑定中的证书是否为新证书

解决方案:重新执行  `Enable-ExchangeCertificate`  并重启相关服务。

4.3  混合部署中  Federation/Auth  证书错误

现象:混合部署环境中,新  Exchange  2019  服务器报告“Federation  or  Auth  certificate  not  found”错误。

原因:旧服务器的  Auth  证书在迁移过程中丢失,或新服务器缺少必要的证书。

解决方案:

  不要删除旧的“Authn”证书

  使用  `Set-AuthConfig`  或  `Set-FederationTrust`  重置有效证书

  必要时从旧服务器导入缺失的证书

4.4  证书私钥访问权限不足

现象:事件查看器中出现事件  ID  10016,提示“由于权限问题无法访问证书私钥”。

原因:Exchange  相关服务账户对证书私钥没有读取权限。

解决方案:

  通过  MMC  添加“证书”管理单元,找到对应证书

  右键  →  所有任务  →  管理私钥

  添加  `NETWORK  SERVICE`  和  `SYSTEM`  账户,授予读取权限

五、证书日常运维避坑要点

5.1  证书到期前续订流程(最易出错的场景)

1.  不要直接删除旧证书:确认新证书在所有服务上生效后再处理旧证书

2.  重新绑定所有服务:续订后必须重新执行  `Enable-ExchangeCertificate`

3.  多服务器逐一更新:在每台  Exchange  服务器上分别导入并启用新证书

4.  更新发送连接器:如果发送连接器配置了特定证书,需要手动更新

5.2  关键检查清单

部署/续订完成后,逐项验证:

`Get-ExchangeCertificate  |  Where-Object  {$_.Services  -like  "IIS"}`  确认服务已分配

从外部网络访问  OWA,检查浏览器证书信息是否正确

运行  `Test-OutlookConnectivity`  测试自动发现

检查  Application  日志中无  MSExchangeTransport  相关错误

多服务器环境中每台服务器的证书状态一致

快速命令参考

操作      PowerShell  命令  

生成  CSR      `New-ExchangeCertificate  -GenerateRequest  -SubjectName  "..."  -DomainName  ...  -PrivateKeyExportable  $true  -Path  "..."`  

导入证书      `Import-ExchangeCertificate  -FileData  ([System.IO.File]::ReadAllBytes('路径.pfx'))  -Password  (ConvertTo-SecureString  '密码'  -AsPlainText  -Force)`  

查看证书      `Get-ExchangeCertificate  \    Format-List  FriendlyName,Subject,CertificateDomains,Thumbprint,NotAfter,Services`  

分配服务    `Enable-ExchangeCertificate  -Thumbprint  "<指纹>"  -Services  IIS,SMTP`  

重启传输服务      `Restart-Service  MSExchangeTransport`  

一句话总结:SAN  证书  +  PowerShell  生成/导入  +  务必分配服务  +  中间证书完整  +  续订时重新绑定  =  成功部署  Exchange  2019  SSL证书。