• SSL 3.0曝出Poodle漏洞的解决方案


    tomcat 各版本对ssl解决方案的配置:
    tomcat6:

    <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
                   maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
         keystoreFile="keystore/domain.jks"  keystorePass="证书密码"
                   clientAuth="false" sslProtocols="TLSv1,TLSv1.1,TLSv1.2,TLSv1.3"
                    ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,
                                    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
                                    TLS_RSA_WITH_AES_128_CBC_SHA256,
                                    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
                                    TLS_RSA_WITH_3DES_EDE_CBC_SHA,
                                    TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />

    tomcat7+:

    <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
                   maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                   keystoreFile="keystore/SSL.jks"  keystorePass="证书密码"
                   clientAuth="false" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2,TLSv1.3"
                   ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,
                                   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
                                   TLS_RSA_WITH_AES_128_CBC_SHA256,
                                   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
                                   TLS_RSA_WITH_3DES_EDE_CBC_SHA,
                                   TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />
    按以上配置即可
    ---------------------------------------------------------------------
    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攻击,若受到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通信日志的代码如下:

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

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

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

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

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

    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,示例代码如下:

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

    附录:

    SSL 3.0高危漏洞避免方案

    SSL POODLE[贵宾犬]漏洞的解决办法(着重指出tomcat6和7以后版本的配置区别)

  • 相关阅读:
    男人应该懂得的
    喝酒礼仪
    Office Web Apps开放测试
    SAP系统概要
    SAP实施成功的关键因素
    SAP企业实施的方法论
    ASAP
    ERP系统的组成部分
    去除word的保护
    实习周小结
  • 原文地址:https://www.cnblogs.com/xiaoliu66007/p/10330496.html
Copyright © 2020-2023  润新知