启用TLS 1.2后访问SSRS管理时无客户端证书可选问题求助
SSRS管理端访问报错:“无客户端证书可选” 解决思路
针对你遇到的这个问题,结合我之前处理类似场景的经验,先明确下你的核心场景:
- 环境:SQL Server 2008 R2 SP3 Reporting Services 运行在 Windows Server 2008 上,已安装 .Net 4.6.1 并启用 .Net 3.5 功能;IIS、数据库、报表服务均部署在本地(自定义登录URL在另一机器,暂时不影响当前问题)
- 触发操作:通过 IISCrypto 仅启用了 TLS 1.2
- 问题现象:访问报表服务管理端时弹出 “访问SSRS管理时无客户端证书可选” 的错误
下面是几个优先级较高的排查和解决步骤:
1. 先检查IIS的SSL客户端证书设置
这是最容易踩坑的点:
- 打开IIS管理器,找到SSRS对应的站点(一般叫
ReportServer或Reports),右键进入「SSL设置」 - 看看「客户端证书」选项是不是设成了「要求」——如果是,直接改成「忽略」或者「接受」就行。TLS 1.2启用后,有时候会不小心触发这个强制要求的配置,导致浏览器弹出证书选择框但没有可选证书。
2. 核对SSRS自身的URL配置
打开「Reporting Services配置管理器」,分别检查「Web服务URL」和「报表管理器URL」:
- 确认是否勾选了「要求安全连接(SSL)」,如果之前没启用过客户端证书验证,建议先取消这个选项试试,或者调整为允许但不强制要求客户端证书。
- 同时检查绑定的SSL证书,确保它支持TLS 1.2(比如签名算法是SHA256及以上),旧的SHA1证书可能和TLS 1.2不兼容。
3. 给SQL Server 2008 R2补TLS 1.2支持补丁
SQL Server 2008 R2 SP3本身对TLS 1.2的支持是不完整的,即使装了.Net 4.6.1,SSRS服务还是可能无法正确适配TLS 1.2:
- 安装KB3135244补丁,这个是微软官方针对SQL Server 2008 R2的TLS 1.2支持补丁,能让SSRS等组件正常使用TLS 1.2协议。
- 之后修改SSRS的服务配置文件
ReportingServicesService.exe.config(默认路径在C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin),在<runtime>节点里加一段配置,强制SSRS调用.Net 4.6.1的TLS支持:<runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=false"/> <!-- 保留原有assemblyBinding等配置 --> </runtime>
4. 确认IISCrypto的配置生效
用IISCrypto修改协议后,别只重启服务,最好直接重启整个服务器,让TLS 1.2的配置完全生效。另外检查下加密套件,确保没有禁用TLS 1.2必需的套件,不然也可能出现奇怪的证书相关报错。
内容的提问来源于stack exchange,提问作者Ignacio Soler Garcia
相关产品推荐
相关产品推荐

