Windows10推送的KB3163018补丁导致TLS1.0不可用

现象描述:

Windows 10在2016年6月14日推送的KB3163018补丁,此补丁会导致部分TLS1.0不可用,主要影响是的Edge和IE11浏览器,对不依赖IE内核的浏览器没有影响。

https_tls_1.0_error

问题原因:

windows10在升级此补丁后,IE和Edge禁用TLS_DHE_RSA_WITH_AES_128_CBC_SHA,而IE或Edge浏览器向服务器发起HTTPS连接请求时,发送的密文族(ciphers suites)里却包含TLS_DHE_RSA_WITH_AES_128_CBC_SHA,tomcat旧的HTTPS配置方式会优先使用TLS_DHE_RSA_WITH_AES_128_CBC_SHA,所以无法建立连接。

这么说吧,IE在建立连接时,告诉服务器,我支持A、B、C加密算法,然后服务器说,用A算法加密,IE通信层的程序又拒绝了A算法。导致无法建立连接。

我恨微软,1. 更新补丁没详细说明,2.程序没改全。

解决方案:

针对tomcat服务器

1. 服务器是tomcat的,修改配置文件conf/server.xml 中Connector的属性

临时解决方案:此方案优点,配置很少,而且兼容IE6,IE8,IE9,IE10,IE11,测试环境win xp,win 7, win 10,兼容tomcat5,tomcat6(测试确认了至少3个小版本),兼容JDK6默认安装

ciphers="SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA"

配置位置如图(图片供参考)

tomcat_https_config

说明:

SSL_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA 支持IE6,IE8,IE9, IE10, IE11
TLS_RSA_WITH_AES_128_CBC_SHA 支持IE9, IE10,IE11

建议解决方案:升级JDK到7以上,开启TLS1.2,并且将tomcat升级到最新版本。

2.如果是nginx,apache之类的请参考 https://cipherli.st/ 

参考连接:

HTTPS研究(2)—分解HTTPS连接建立过程

http://www.jianshu.com/p/a766bbf31417

apache Tomcat配置SSL(https)步骤

http://www.cnblogs.com/qqzy168/archive/2013/08/03/3140252.html

Tomcat6+JDK6如何加固,解决Logjam attack

http://rickqin.blog.51cto.com/blog/1096449/1682426

参考资料:

https://developer.mozilla.org/en-US/Firefox/Releases/39/Site_Compatibility

https://weakdh.org/  (Weak Diffie-Hellman and the Logjam Attack)

https://weakdh.org/sysadmin.html  (各种服务器的ciphers配置方式)

https://weakdh.org/logjam.html

https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

 

JDK 6 支持的ciphers名称列表
http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJSSEProvider

Java Cryptography Architecture Sun Providers Documentation
http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html

JavaTM Secure Socket Extension (JSSE) Reference Guide
http://docs.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html

Java Cryptography Architecture Standard Algorithm Name Documentation (jdk6加密体系标准算法名)
http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files (如果没有这个,不支持长度超过128的密码, 比如TLS_RSA_WITH_AES_128_CBC_SHA中的128)
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

配置方式:下载后,解压缩 jce\local_policy.jar 和 jce\US_export_policy.jar 到 %JAVA_HOME%\jre\lib\security

 

TLS漏洞参考:
关于SSL/TLS最新漏洞“受戒礼”初步报告
http://www.freebuf.com/articles/network/62442.html

关于TLS 1.2受到此前SSL V3 “POODLE”漏洞攻击威胁的情况公告
http://www.cnvd.org.cn/webinfo/show/3549

POODLE漏洞东山再起,影响TLS安全传输协议
http://sec.chinabyte.com/157/13173657.shtml

扩展阅读:

SSL应用:今天截获,明天解密(图片存档

http://sec.chinabyte.com/298/12692298.shtml

IE6,IE8,IE11支持的TLSv1.0的ciphers:

win10_ie11

win10_ie11_hello2

winxp ie8

xp_ie6_tls_hello2

winxp ie6

xp_ie8_tls_hello

发表评论

电子邮件地址不会被公开。 必填项已用*标注