环境:
在安装了.Net 4.6.1且启用.Net 3.5的Windows 2008服务器上运行SQL Server 2008 R2 SP3上的Reporting Services。本地计算机中的IIS,数据库和报告服务(不同计算机中的自定义登录URL,但似乎不相关)。
已完成的更改:
出于安全原因,我们强制转移到TLS 1.2,因此我们使用IISCrypto启用了TLS 1.2
结果:
从这一刻起,我们只在尝试访问报告管理网站时才会收到错误消息。在浏览器上,我们收到错误500:
基础连接已关闭:发生意外错误 收到
在SSRS日志中,我们可以看到以下异常:
System.Net.WebException :底层连接已关闭:An 接收时发生意外错误。 ---> System.ComponentModel.Win32Exception :客户端和服务器无法 沟通,因为他们没有共同的算法
callstack在ReportServer OnInit()上启动,因此它在启动时失败,并且在Reporting Services初始化时发生错误。
在.Net Framework上启用跟踪我发现以下消息,其中显示SSRS调用自己的Web服务时发生故障:
System.Net Information: 0 : [5076] HttpWebRequest#38854310 - Request: POST /ReportServer/ReportService2010.asmx HTTP/1.1
System.Net Information: 0 : [4124]
SecureChannel#52830003::.ctor(hostname=themachineshostname, #clientCertificates=0)
System.Net Information: 0 : [4124] Enumerating security packages:
System.Net Information: 0 : [4124] Negotiate
System.Net Information: 0 : [4124] NegoExtender
System.Net Information: 0 : [4124] Kerberos
System.Net Information: 0 : [4124] NTLM
System.Net Information: 0 : [4124] Schannel
System.Net Information: 0 : [4124] Microsoft Unified Security Protocol Provider
System.Net Information: 0 : [4124] WDigest
System.Net Information: 0 : [4124] TSSSP
System.Net Information: 0 : [4124] pku2u
System.Net Information: 0 : [4124] CREDSSP
System.Net Information: 0 : [4124] SecureChannel#52830003 - Left with 0 client certificates to choose from.
System.Net Information: 0 : [4124] AcquireCredentialsHandle(package = Microsoft Unified Security Protocol Provider, intent = Outbound, scc = System.Net.SecureCredential)
System.Net Error: 0 : [4124] AcquireCredentialsHandle() failed with error 0X80090331.
已检查的内容:
正在使用的证书仍然有效,并且其签名链被放置在适当的“中间”和“根”商店中。
以管理员身份运行应用程序池无济于事。
使用从IIS生成的自定义签名证书无济于事。
重要:此问题仅发生在Reporting Services管理网站上,报告正常
后续步骤
还有什么想法可以尝试?有没有办法知道为什么安全包没有被选中?
更新
该问题与TLS1.2无关,因为再次启用TLS 1我得到了相同的错误。我猜测登录URL是以某种方式涉及的。
答案 0 :(得分:4)
让我们确保在注册表中正确设置了两件事(在Report Server和IIS自定义登录服务器上)。达到设置更改后需要重新启动(一次执行一次以查看哪些有效)。
TLS 1.2注册表中的客户端/服务器启用
转到HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
并确保已启用TLS 1.2并禁用其他提供商。如果TLS 1.2不存在则创建它。
详情here
确保UseStrongCrypto已启用.NET
转到here并确保启用强加密。
注意:我在移动设备上很难输入深入的答案。如果这些东西适合你,我可以在以后的答案中添加更多细节。