您的位置:首页 > 理论基础 > 计算机网络

tomcat配置https访问chrome提示ERR_SSL_VERSION_OR_CIPHER_MISMATCH

2018-03-08 10:20 861 查看
今天配完tomcat ssl后,发现页面无法访问。chrome提示以下:



问题是其他服务器上一样的配置完全没问题。

百度了一圈没找到解决方案,对tomcat配置ssl的原理也不甚了解。后面谷歌找到了解决方案,在ssl的那个connector配置指定加密协议集:

ciphers="TLS_ECDHE_RSA_WITH_AES_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_ECDHE_RSA_WITH_RC4_128_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,
SSL_RSA_WITH_RC4_128_SHA"


具体connector配置如下:

 <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" URIEncoding="UTF-8"
keystoreFile="conf/chinanetcenter.tomcat" keystorePass="2013111"
clientAuth="false" sslProtocol="TLS" keystoreType="PKCS12"
ciphers="TLS_ECDHE_RSA_WITH_AES_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_ECDHE_RSA_WITH_RC4_128_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, SSL_RSA_WITH_RC4_128_SHA"
compression="on" compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/>


配置完后,就可以访问页面了。

具体原因不足,后面有机会深入了解tomcat机制原理再来探讨。

以下是找问题中看到的一些资料:

tomcat的ssl有两种实现,一种是使用apr,一种是JSSE。tomcat会自动选择使用哪种实现。如果服务器安装了apr,好像会自动选择使用apr(本人推测上面的错误可能和apr有关系,因为唯独那台服务器装了apr,就不行了)。可以通过指定protocol来让tomcat选择JSSE实现。

tomcat对SSL的实现有两种,JSSE和APR

(1)JDK 从1.4版本就实现JSSE,APR使用OpenSSL引擎,所以想使用APR实现的话,必须配置OpenSSL引擎。

(2)JSSE分为BIO实现和NIO实现,BIO实现的protocol值为org.apache.coyote.http11.Http11Protocol,NIO实现的protocol值org.apache.coyote.http11.Http11NioProtocol。

据我试验,tomcat6中必须使用BIO实现方式。使用NIO实现方式会出错。

如果想使用APR方式则必须安装Tomcat本地库。

(3)大部分tomcat中默认的连接器就是BIO连接器

经试验tomcat6是BIO连接器,不支持NIO,因此connect连接器的protocol值应该写为org.apache.coyote.http11.Http11Protocol
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: