Ign*_*cia 7 ssl schannel reporting-services ssrs-2008-r2 tls1.2
环境:
在安装了.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:基础连接已关闭:接收时发生意外错误.---> 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.
Run Code Online (Sandbox Code Playgroud)
已检查的事情:
正在使用的证书仍然有效,并且其签名链被放置在适当的"中间"和"根"存储中.
以管理员身份运行应用程序池无济于事.
使用从IIS生成的自定义签名证书没有帮助.
重要提示:该问题仅发生在Reporting Services管理站点上,报告正常
下一步
关于还有什么可以尝试的任何想法?有没有办法知道为什么安全包没有被选中?
更新
该问题与TLS1.2无关,因为再次启用TLS 1我得到相同的错误.我猜测登录URL是以某种方式涉及的.
让\xe2\x80\x99s 确保在注册表中正确设置两件事(在报表服务器和 IIS 自定义登录服务器上)。达到设置更改后需要重新启动(一次执行一个以查看效果)。
\n\n注册表中的 TLS 1.2 客户端/服务器启用
\n\n转至HKLM SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL
并确保 TLS 1.2 已启用且其他提供商已禁用。如果 TLS 1.2 不存在,请创建它。\n详情 请看这里
确保为 .NET 启用 UseStrongCrypto
\n\n转到此处并确保启用强加密。
\n\n注意:我在移动设备上很难输入深入的答案。如果这些事情对您有用,我可以稍后在答案中添加更多详细信息。
\n