Java 无法对Tomcat 8使用HTTPS
我正在尝试将HTTPS与Tomcat8一起使用。我已经按照在中提到的过程使用HTTPS,但目前我似乎无法让它工作 因为问题似乎出在keystore上,所以我列出了下面的步骤-Java 无法对Tomcat 8使用HTTPS,java,tomcat,ssl,Java,Tomcat,Ssl,我正在尝试将HTTPS与Tomcat8一起使用。我已经按照在中提到的过程使用HTTPS,但目前我似乎无法让它工作 因为问题似乎出在keystore上,所以我列出了下面的步骤- 1. keytool -genkeypair -keyalg RSA -validity 3650 -alias tomcat 2. keytool -certreq -alias tomcat -file tomcat.csr 3. openssl req -nodes -config conf/openssl.cn
1. keytool -genkeypair -keyalg RSA -validity 3650 -alias tomcat
2. keytool -certreq -alias tomcat -file tomcat.csr
3. openssl req -nodes -config conf/openssl.cnf -days 3650 -x509 -newkey rsa:2048 -out public/company_public.pem -outform PEM
4. openssl x509 -in public/company_public.pem -outform DER -out public/company_public.crt and then place it in docroot
5. Updated web.xml with
<mime-mapping>
<extension>crt</extension>
<mime-type>application/x-x509-ca-cert</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cert</extension>
<mime-type>application/x-x509-ca-cert</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pem</extension>
<mime-type>application/x-x509-ca-cert</mime-type>
</mime-mapping>
6.Imported the trusted root certificate into the web browser
7. openssl ca -batch -config conf/openssl.cnf -in tomcat.csr -out tomcat.cert
8. openssl x509 -in tomca.cert -out tomcat.crt
9. keytool -importcert -v -trustcacerts -alias companycaroot -file company_public.crt
10. keytool -import -v -alias tomcat -file tomcat.crt
由于问题在于解析HTTP请求头,我更新了maxHttpHeaderSize=99999,以确保这不会导致问题
下面是server.xml中的配置:
<Connector executor="tomcatThreadPool"
port="50915"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxHttpHeaderSize="99999"
server="Test Web"
keepAliveTimeout="90000"
maxKeepAliveRequests="-1"
acceptorThreadCount="40"
redirectPort="50921" />
<Connector executor="tomcatThreadPool"
port="50921"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxHttpHeaderSize="99999"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="false"
server="Test Web"
keepAliveTimeout="90000"
maxKeepAliveRequests="-1"
acceptorThreadCount="40"
keystoreFile="/web/home/wb10d1/.keystore"
keystorePass="changeit"
allowTrace="true"
sslProtocol="TLS" />
Firefox 44.0.2返回错误:
使用HTTP连接-端口50915
连接到主机名50915时出错。SSL收到的记录超过了允许的最大长度。(错误代码:ssl\u错误\u接收\u记录\u过长)
更新#1
使用HTTPS连接器-端口50921
主机名50921的所有者未正确配置其网站。为了保护您的信息不被窃取,Firefox尚未连接到此网站。
高级信息:ssl\u错误\u无\u密码\u重叠
更新#2:添加了更多调试信息
在这里,我在catalina.out中看到以下错误:-
不支持的扩展类型\u 23,数据:
扩展重新协商\u信息,重新协商的\u连接:
***
我得到了导致此错误的代码:-
似乎正在将扩展类型检查为下面枚举值中的一个,但实际上不是
我无法找出设置未知扩展名的原因
我已经检查了互联网上关于这个错误的其他链接,但是推荐给其他人的事情已经完成了
**注意:**我可以使用HTTP访问URL,没有任何问题。因此,问题显然在于HTTPS 您设置了证书吗?是的,我已经创建了证书并在浏览器中导入。您的Tomcat是否正在尝试协商SSL v3?请参见@Xvolks I将sslProtocol=“TLS”更改为sslProtocols=“TLSv1,TLSv1.1,TLSv1.2”,但仍然是相同的
keytool-list-keystore/web/home/wb10d1/.keystore
,并确保它包含私钥条目
(而不是trustedCert
)。
<Connector executor="tomcatThreadPool"
port="50915"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxHttpHeaderSize="99999"
server="Test Web"
keepAliveTimeout="90000"
maxKeepAliveRequests="-1"
acceptorThreadCount="40"
redirectPort="50921" />
<Connector executor="tomcatThreadPool"
port="50921"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxHttpHeaderSize="99999"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="false"
server="Test Web"
keepAliveTimeout="90000"
maxKeepAliveRequests="-1"
acceptorThreadCount="40"
keystoreFile="/web/home/wb10d1/.keystore"
keystorePass="changeit"
allowTrace="true"
sslProtocol="TLS" />
fiddler.network.https> HTTPS handshake to hostname.domainname.com (for #4) failed. System.IO.IOException The handshake failed due to an unexpected packet format.
Unsupported extension type_23, data:
Extension renegotiation_info, renegotiated_connection: <empty>
***