Tomcat SSL - IllegalStateException : SSL session ID not available

标签 tomcat ssl spring-security

我正在研究项目 - Tomcat 9、JSF 2.2、Spring Security 4.1

当我尝试与 HTTPS SSL 建立安全连接时,当我访问页面时出现错误,但 HTTPS 运行良好。只有这个错误让我发疯。

02-Jul-2016 16:02:04.664 WARNING [https-openssl-nio-443-exec-1] org.apache.coyote.http11.Http11Processor.action Exception getting SSL attributes
java.lang.IllegalStateException: SSL session ID not available
 at org.apache.tomcat.util.net.openssl.OpenSSLEngine$OpenSSLSession.getId(OpenSSLEngine.java:1048)
 at org.apache.tomcat.util.net.jsse.JSSESupport.getSessionId(JSSESupport.java:156)
 at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:806)
 at org.apache.coyote.Request.action(Request.java:392)
 at org.apache.catalina.connector.Request.getAttribute(Request.java:903)
 at org.apache.catalina.connector.Request.getAttributeNames(Request.java:985)
 at com.sun.faces.application.WebappLifecycleListener.requestDestroyed(WebappLifecycleListener.java:114)
 at com.sun.faces.config.ConfigureListener.requestDestroyed(ConfigureListener.java:383)
 at org.apache.catalina.core.StandardContext.fireRequestDestroyEvent(StandardContext.java:5953)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
 at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1419)
 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:44)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.lang.Thread.run(Thread.java:745)

奇怪的是我的队友没有收到这个错误,他有相同的代码、服务器和服务器设置。

Tomcat HTTPS 设置:

    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
      SSLEnabled="true"
      maxThreads="150"
      scheme="https" secure="true"          
      clientAuth="false" sslProtocol="TLSv1.2"
      keystoreFile="C:\apache-tomcat-9.0.0.M8\conf\keystore"
      keystorePass="changeit" 
      keyAlias="tomcat" 
      keyPass="????" />

对不起我的英语。

最佳答案

我怀疑你的队友没有安装Tomcat Native库。

这是启用 TLS session 票证的副作用。如果您在 SSLHostConfig 上设置 disableSessionTickets="true",您将看到 TLS session ID,并且错误将消失。

您在启用 session 票证时看到的异常看起来是 Tomcat 的 JSSE 和 OpenSSL 代码中的错误。我已经为 Tomcat Native 打开了一个错误:

https://bz.apache.org/bugzilla/show_bug.cgi?id=59811

您可以通过错误跟踪进度。

关于Tomcat SSL - IllegalStateException : SSL session ID not available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38178536/

相关文章:

java - 使用 Groovy 从 JMeter 使用标准 Java 类

linux - 使用 ECDSA 证书问题 boost asio

spring-security - Spring Webflux + LDAP/Kerberos 安全

java - 将表 wp_users(Wordpress) 转换为表 users(Java) - 安全登录

asp.net - 在 IIS 中使用 SSL 安全访问 WCF 时出现证书不受信任错误

java - Tomcat静态变量的使用

java - 多进程监听端口时,tomcat为什么会收到请求?

tomcat - Chef cookbook 如何将键值传递给资源

java - 如何仅在特定配置文件上启用 spring 基本身份验证?

java - 如何修复在 Tomcat 7 中不呈现的 jSTL c foreach 标签?