码农日常

AppScan 检测到 SHA-1 密码套件

2017-12-08  本文已影响0人  rapin

环境

Tomcat7
JDK1.8
Chrome 63

问题

AppScan 扫描 检测到 SHA-1 密码套件。如下图:


image.png
image.png

解决过程

按AppScan扫描报告里的意思就是使用了以下这两个较弱的密码套件。

TLS_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

解决办法就是去掉这两个玩意,应该就妥妥滴了。
Tomcat的SSL配置现状:

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        clientAuth="false" sslEnabledProtocols="TLSv1.2" 
        keystoreFile="conf/cer/server.keystore" 
                keystorePass="abc123"               
                URIEncoding="utf-8" 
                useBodyEncodingForURI="true" 
                address="127.0.0.1" 
                ciphers="TLS_ECDHE_RSA_WITAES_128_CBC_SHA256,
                               TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
                               TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
                               TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
                               TLS_RSA_WITH_AES_128_CBC_SHA256,
                               TLS_RSA_WITH_AES_128_CBC_SHA,
                               TLS_RSA_WITH_AES_256_CBC_SHA256,
                               TLS_RSA_WITH_AES_256_CBC_SHA"/>

ciphers是之前为了解决 检测到RC4密码套件 的问题而配置的。
去掉那两个玩意后:

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        clientAuth="false" sslEnabledProtocols="TLSv1.2" 
        keystoreFile="conf/cer/server.keystore" 
                keystorePass="abc123"               
                URIEncoding="utf-8" 
                useBodyEncodingForURI="true" 
                address="127.0.0.1" 
                ciphers="TLS_ECDHE_RSA_WITAES_128_CBC_SHA256,
                               TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
                               TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
                               TLS_RSA_WITH_AES_128_CBC_SHA256,
                               TLS_RSA_WITH_AES_256_CBC_SHA256,
                               TLS_RSA_WITH_AES_256_CBC_SHA"/>

重启TOMCAT。用IE访问正常,用Chrome访问,居然无法访问。。。这是为毛???

于是试试网上搜搜看,只搜到这篇 http://www.zhihuiku.net/view/163 。解决办法跟我理解一样,估计作者没测试吧。
继续搜索,测试。。。试了不同的密码套件组合,试了各种重新生成证书,试了升级tomcat,jdk。升级chrome。。。
就这样1天过去。只得出一个结论,去掉TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA这个chrome就无法访问。。。无解。。。

休息一个晚上,第二天继续。。。搞了一个上午还是没结果。然后突然一想是不是我搜索的姿势不对。决定换个姿势。把TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA先加上,通过调试工具看看什么情况。


image.png

发现了新的关键词:

Chrome browser reports obsolete cipher (AES_256_CBC with HMAC-SHA1)
心想解决这个问题应该就可以了。

用这一句google搜了下终于找到解决办法。

https://security.stackexchange.com/questions/145196/chrome-browser-reports-obsolete-cipher-aes-256-cbc-with-hmac-sha1
里面有个回答是用以下密码套件在jboss下解决了

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256

发现这一段跟我之前的配置不一样,试一下。

image.png

没提示了,AppScan重新扫扫,解决了。

总结:

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        clientAuth="false" sslEnabledProtocols="TLSv1.2" 
        keystoreFile="conf/cer/server.keystore" 
                keystorePass="abc123"               
                URIEncoding="utf-8" 
                useBodyEncodingForURI="true" 
                address="127.0.0.1" 
                ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
                               TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
                               TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                               TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
                               TLS_RSA_WITH_AES_256_GCM_SHA384,
                               TLS_RSA_WITH_AES_128_GCM_SHA256,
                               TLS_RSA_WITH_AES_256_CBC_SHA256,
                               TLS_RSA_WITH_AES_128_CBC_SHA256"/>
上一篇 下一篇

猜你喜欢

热点阅读