- 客户端验证服务器证书:这是最常见的情况,即 Lync/Skype for Business 客户端(桌面版或移动版)在尝试连接服务器时,不信任服务器提供的证书。
- 服务器验证服务器证书:这是服务器内部通信(如前端池、边缘服务器之间的通信)时出现的问题,通常是某个服务器不信任其他服务器或其自身的证书。
下面我将详细梳理问题的原因、排查步骤和解决方案。

核心问题:为什么验证会失败?
证书验证的核心是信任链和信息匹配,如果任何一个环节出现问题,验证就会失败。
- 信任链:服务器证书必须由一个受信任的“证书颁发机构”(CA)颁发,这个CA本身也必须被客户端信任,如果CA是自签名的,或者客户端没有导入正确的中间证书,信任链就会断裂。
- 信息匹配:证书中的信息必须与客户端访问的地址完全一致,最常见的就是主题名称和使用者备用名称不匹配。
排查步骤(从易到难)
在动手修改任何设置之前,请务必先备份你的配置,特别是证书本身。
第一步:收集错误信息
这是最关键的一步,错误信息会直接告诉你问题所在,查看以下几个地方:
-
Lync 客户端错误提示:
(图片来源网络,侵删)- 点击客户端左下角“选项” -> “状态” -> “高级”。
- 在“诊断”标签页中,点击“日志”按钮,找到最新的日志文件(通常在
%userprofile%\Tracing目录下)。 - 在日志中搜索关键字,如
Certificate,TLS,Failure,authentication等,日志会明确指出是哪个证书验证失败,以及失败的原因(The certificate CN name does not match the passed value)。
-
Windows 事件查看器:
- 在 Lync 服务器或客户端上打开“事件查看器”。
- 查看“应用程序和服务日志” -> “LynSrv” 或 “MS-UC-PHONE” 相关的事件源,错误和警告信息会详细记录证书验证失败的过程。
-
Skype for Business Server 命令行管理程序:
- 如果是服务器间通信问题,可以运行以下命令来检查证书状态:
Get-CsCertificate -Type Default Get-CsCertificate -Type WebServices,Internal Test-CsCertificateConfiguration
- 如果是服务器间通信问题,可以运行以下命令来检查证书状态:
第二步:检查证书本身
使用证书管理工具(如 certmgr.msc)来检查服务器上安装的证书。
-
打开证书管理器:
(图片来源网络,侵删)- 在服务器上,按
Win + R,输入certmgr.msc并回车。
- 在服务器上,按
-
定位证书:
- 导航到“当前用户” -> “受信任的根证书颁发机构” -> “证书”。
- 导航到“本地计算机” -> “受信任的根证书颁发机构” -> “证书”。
- 检查你的CA证书(无论是公共CA还是你自己的私有CA)是否在这里,如果使用私有CA,确保CA的证书被正确导入到了“受信任的根证书颁发机构”存储区。
-
检查服务器证书:
- 导航到“本地计算机” -> “个人” -> “证书”。
- 找到分配给 Lync/Skype for Business 服务的证书(通常主题名称或使用者备用名称包含你的域名,如
lync.yourdomain.com)。 - 双击证书,切换到“详细信息”选项卡。
- 检查使用者名称:这应该是客户端访问的主要地址(如
sip.yourdomain.com)。 - 检查使用者备用名称:这是最关键的一步! 这里必须包含所有客户端和服务可能用来访问服务器的名称,包括:
sip.yourdomain.comlync.yourdomain.commeet.yourdomain.comdialin.yourdomain.comwebconf.yourdomain.comaccess.yourdomain.com(用于边缘服务器)- 以及服务器的完全限定域名,如
fe01.yourdomain.com。
第三步:检查客户端上的信任
如果服务器证书本身没问题,可能是客户端没有正确信任CA。
- 公共CA:通常客户端操作系统会自动信任主流的公共CA(如 DigiCert, GlobalSign, GoDaddy 等),如果问题依旧,可能是客户端系统过旧或损坏。
- 私有CA(内部部署):这是最常见的问题,你需要将你的CA的根证书和中间证书(如果有的话)分发给所有客户端。
- 方法A(推荐):通过组策略将证书部署到域内所有计算机的“受信任的根证书颁发机构”存储区。
- 方法B:手动导出CA证书(选择
.cer文件),然后让用户双击运行并安装到“受信任的根证书颁发机构”。
常见问题及解决方案
问题1:证书使用者名称不匹配
- 现象:客户端尝试连接
lync.yourdomain.com,但证书的Subject或Subject Alternative Name中没有这个名称。 - 解决方案:
- 重新申请证书:在申请证书时,确保在
Subject Alternative Name字段中包含了所有需要的服务域名。 - 使用通配符证书:如果你的所有服务都在同一个二级域下(如
*.yourdomain.com),可以申请一个通配符证书,这样可以简化管理。 - 在 Lync Server 中配置简单 URL:确保你的简单 URL 设置与证书中的 SANs 一致。
- 重新申请证书:在申请证书时,确保在
问题2:客户端不信任证书颁发机构
- 现象:错误提示指向 CA 不可信。
- 解决方案:
- 获取 CA 证书:在证书颁发机构服务器上,右键点击 CA 名称 -> “任务” -> “导出 CA 证书”,选择“Base-64 encoded X.509 (.CER)”格式。
- 分发证书:将导出的
.cer文件通过组策略或手动方式安装到所有客户端的“受信任的根证书颁发机构”。 - 重启客户端:安装完成后,重启 Lync/Skype for Business 客户端。
问题3:证书已过期
- 现象:错误提示证书过期。
- 解决方案:
- 续订证书:在到期前,使用同样的模板和要求向你的 CA 申请一个新证书。
- 分配新证书:在 Lync Server 命令行管理程序中,使用
Request-CsCertificate或Assign-CsCertificatecmdlet 将新证书分配给服务。 - 移除旧证书:确认新证书工作正常后,可以移除旧的过期证书。
问题4:证书吊销
- 现象:客户端无法通过 OCSP 或 CRL 验证证书状态,认为证书已被吊销。
- 解决方案:
- 检查 CRL 分发点:在证书的“详细信息” -> “吊销信息”中,检查 CRL 的 URL 是否可以正常访问(在客户端浏览器中打开试试)。
- 检查网络连接:确保客户端可以访问到 CRL 服务器,有时内部防火墙会阻止这个访问。
- 禁用吊销检查(不推荐):这是一个临时 workaround,存在安全风险,可以通过修改注册表禁用客户端的证书吊销检查(路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot\DisableCRLCheck),但强烈建议解决根本的网络或 CRL 发布问题。
问题5:内部服务器通信问题
- 现象:服务器之间无法建立信任,拓扑无法发布,或者服务无法启动。
- 解决方案:
- 检查服务器证书:确保所有需要通信的服务器(如前端池、边缘服务器)都安装了正确的证书,并且该证书被分配给了正确的服务(如
WebServices,Internal)。 - 运行拓扑验证:在拓扑构建器中,重新生成拓扑并发布,或者使用
Test-CsTopology命令来验证。
- 检查服务器证书:确保所有需要通信的服务器(如前端池、边缘服务器)都安装了正确的证书,并且该证书被分配给了正确的服务(如
