最近在阿里云上部署了一台机器,安装了sql server2012数据库,把原来的数据迁移过来,结果悲剧了,日志里报出如下错误:
com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“SQL Server 返回的响应不完整。连接已关闭。
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667)
感觉很奇怪,操作系统没有变化,都是由阿里云提供安装的,数据库版本也没有变化,也是一样的介质安装的,结果就搞不懂了,出现一种非常恶劣的情况,几台应用突然因为连接泄露,全部宕机,直接让生产歇菜,这下日志难过了。开始还以为是程序的问题,结果程序方面进行全面的检查,也没有发现什么。
后来咨询了微软的一位比较资深的人士,他告诉我们可能是由于以下补丁的安全信任机制引起的,具体补丁如下:
KB3172605、KB3172614、KB3161608、KB3161606、KB3156418
有了这个,当然也就有了解决方法,卸载补丁了。
处理方法1:
我们程序中搜索了以上补丁,在我们机器上只有KB3172605这个补丁。与原来老的机器比较,老的机器确实没有这个补丁。
我们通过平台把补丁卸载了,然后把TLS_DHE_RSA_WITH_AES_128_CBC_SHA TLS_DHE_RSA_WITH_AES_256_CBC_SHA这两个ssl密码套件的值清理掉,操作系统重启后,再启应用,再也没有报错。
后来,我们从google上搜索,网上也给出了第二种解决方案,如下:
处理方法2:
1 在命令提示符或搜索中,输入gpedit.msc,然后点击确定或Enter键,进入“本地组策略编辑器”。
2 在编辑器左侧“本地计算机策略”中,依次选择“计算机配置”-->“管理模板”-->“网络”-->“SSL 配置设置”。
3 在编辑器右侧双击设置下的“SSL 密码套件顺序”。进入“SSL 密码套件顺序”编辑器。
4 选择“已启用”。
5 删除“选项”中“SSL 密码套件”的值中如下两个套件:
TLS_DHE_RSA_WITH_AES_128_CBC_SHA TLS_DHE_RSA_WITH_AES_256_CBC_SHA
6 点击右下角的“应用”后,点击“确定”。
7 重启计算机。
同样,在java平台上也给出了解决方案,1.6及1.6以下的版本,需要打补丁。
微软也是坑人呀,阿里也是坑人的,没有验证的补丁,不具备通用性,也直接加进去,我算是被坑了一把,还一直怪人家程序有问题,殊不知是自己的问题,掉大了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29371470/viewspace-2135441/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29371470/viewspace-2135441/