Tomcat8 SSL connector



我按照官方教程在 tomcat8 上安装 ssl,但我的浏览器给了我一个ERR_SSL_VERSION_OR_CIPHER_MISMATCH错误。

首先,我为您提供有关服务器的信息:

  • IP : 10.1.5.55
  • 雄猫端口 : 8200
  • Java 版本 : 1.8.0_121
  • 猫版本:阿帕奇雄猫/8.5.11
  • Servlet 规范版本 : 3.1
  • JSP 版本 : 2.3

我使用https://10.1.5.55:8200/作为 url 连接到我的服务器(使用 http 协议(

让我感到困惑的第一件事是所有教程都在谈论连接器,例如:

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" .../>

但是基本的配置文件服务器.xml为我提供了这个模板:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>

无论如何,我遵循了教程并在 E:\keys 下生成了我的密钥库:

keytool -genkey -alias myapp -keystore myapp-keystore

在我键入的名字和姓氏中:10.1.5.55:8200 密码 : 更改它 我按回车键以获取密钥的相同密码。

然后我像它一样编写了我的连接器(我修改了 http 端口以在 8199 上运行(:

<Connector
port="8200" 
protocol="org.apache.coyote.http11.Http11NioProtocol" 
SSLEnabled="true" 
maxThreads="300" 
scheme="https" 
secure="true" 
clientAuth="false" 
sslProtocol="TLS" 
keystoreFile="E:keysmyapp-keystore" 
keystorePass="changeit"
/>

但是我在这一点上得到了错误。

现在我尝试过所有解决方案:

  • 逐个尝试所有 TLS 协议(v1、v1.1、v1.2、SSLv3(
  • 更改密钥库的名字和姓氏 10.1.5.55 孤独
  • 尝试协议="HTTP/1.1",协议组织...http11Nio2协议

最后,我尝试添加密码。这是我使用的列表:

ciphers="TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, 
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, 
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA, 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, 
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA, 
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, 
TLS_ECDH_ECDSA_WITH_RC4_128_SHA, 
TLS_ECDH_RSA_WITH_RC4_128_SHA, 
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, 
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 
TLS_RSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, 
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, 
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 
TLS_RSA_WITH_AES_128_GCM_SHA256, 
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, 
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, 
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, 
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, 
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, 
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, 
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, 
TLS_EMPTY_RENEGOTIATION_INFO_SCSVF 
"

我从这里得到了这个列表,在这里我了解到Tomcat7 w/Java7与Tomcat8 w/Java8的工作方式不同。正如这里推荐的那样,我尝试删除"sslProtocol"并添加"useServerCipherSuitesOrder",但没有任何效果,我的浏览器总是出现相同的错误。

请有人告诉我如何解决这个问题?

您正在生成 1024 位的 DSA 证书,并且 Chrome 停止/停止支持 DSA(DSS(,如此处或此处所示。尝试生成 2048 位的 RSA 证书

替换此命令

keytool -genkey -alias myapp -keystore myapp-keystore

keytool -genkey -alias myapp -keystore myapp-keystore -keyalg RSA

相关内容

  • 没有找到相关文章

最新更新