【问题标题】:Configured SSL on Tomcat 8 and Connection Times Out在 Tomcat 8 上配置 SSL 并且连接超时
【发布时间】:2016-05-05 07:35:13
【问题描述】:

我设置了一个密钥库并从 openssl.com 获得了 SSL 证书。我遵循的确切步骤在这里:https://drive.google.com/file/d/0B6PUGo7cBLcDTzdkc0pzT2pTMk0/view?usp=sharing

不幸的是,即使在完全按照他们对 tomcat 的说明并与客户支持合作之后,我的 https 连接也会超时。

tomcat 似乎已启动并正在运行,正在侦听端口 443,但我不知道如何进行更深入的调试。 Http 请求服务得很好,所以我知道 tomcat 本身工作得很好。

[ec2-user@ip- logs]$ sudo netstat -tunlp | grep 443 
tcp6       0      0 :::443                  :::*                    LISTEN      19407/java

[ec2-user@ip- logs]$ ps -ef | grep java 
root     19407     1  1 23:03 pts/0    00:00:06 /usr/java/jre1.8.0_60//bin/java
-Djava.util.logging.config.file=/usr/apache-tomcat-8.0.26//conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/apache-tomcat-8.0.26//endorsed -classpath /usr/apache-tomcat-8.0.26//bin/bootstrap.jar:/usr/apache-tomcat-8.0.26//bin/tomcat-juli.jar -Dcatalina.base=/usr/apache-tomcat-8.0.26/ -Dcatalina.home=/usr/apache-tomcat-8.0.26/ -Djava.io.tmpdir=/usr/apache-tomcat-8.0.26//temp org.apache.catalina.startup.Bootstrap start ec2-user 19449 18021  0 23:13 pts/0    00:00:00 grep --color=auto java

我的连接器配置为:

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" KeystoreFile="/home/ec2-user/.keystore" KeystorePass="password" />

请帮忙!

【问题讨论】:

  • 30秒后是否超时??
  • 少一点。大约是25秒。 ;)
  • 您可以指定 asyncTimeout(连接器标签属性)。异步请求的默认超时时间(以毫秒为单位)。如果未指定,则此属性设置为 Servlet 规范默认值 30000(30 秒)。
  • 您是说问题可能是服务器响应缓慢并且在请求完成之前超时,因此我应该设置更长的超时时间?看起来很奇怪 - 我的 http 端点立即响应......我设置了 asyncTimeout="60000" 并且它在 25 秒后仍然超时......
  • Ya..somethuig like that..在您的连接器标签中,默认超时为 30 秒,因为未指定。还要检查是否发生 ssl 连接。见Check SSL

标签: java tomcat ssl tomcat8 tls1.2


【解决方案1】:

当我配置tomcat时,如果在我看到任何响应之前有延迟,几乎总是因为端口由于某种原因被阻塞。您确定端口 443 已通过防火墙打开(假设这是在外部服务器上完成的)?

如果您的标准端口工作正常,但 443 只是在失败前静置并旋转了一段时间,我会将钱放在一个被阻塞的端口上。

【讨论】:

  • 天哪。一定是这个。这是一个EC2实例,我只打开了80端口。我会测试!
  • 我们都去过那里。我希望就是这样。
  • 说真的,我整晚都用头撞墙,这解决了它。谢谢你!
【解决方案2】:

首先确保8443是开放的,443是为https保留的端口,你可以将它用于tomcat,但我更喜欢使用8443或其他与443不同的端口,以避免与httpd https冲突。 用于外部测试

telnet yourserver 8443

必须连接,如果不检查防火墙。 然后检查您的证书、pem 或密钥库的权限(取决于您的配置)必须可以从运行 tomcat 的组或用户中读取(在 debian 上是 tomcat8,在 fedora 上只是 tomcat)。

例如,这是我的/etc/tomcat/server.xml的配置

 <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
    <Connector
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           port="8443" maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="/etc/tomcat/keystore" keystorePass="ooops"
           clientAuth="false" sslProtocol="TLS"/>

密钥库权限

ls -lh /etc/tomcat/keystore 
-r--r-----. 1 tomcat tomcat 2,6K 20 dic 01.06 /etc/tomcat/keystore

8443端口是开放的,可以正常连接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2017-05-24
    • 1970-01-01
    相关资源
    最近更新 更多