首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jboss AS 6.1.0与Java7握手超时

Jboss AS 6.1.0与Java7握手超时
EN

Stack Overflow用户
提问于 2014-11-10 17:37:03
回答 2查看 794关注 0票数 1

我在Jboss 6.1.0中遇到了SSL的问题。我使用CLIEN-CERT来限制客户端证书的某些安全约束。我配置了所有需要的位置(web.xml, jboss-web.xml, jboss-loggin, server.xml, jboss-service)。当我使用SSL启动服务器时,一切正常,但是当我使用JDK7启动服务器并尝试访问安全约束时,我得到了错误异常获取JDK6属性:java.net.SocketException: SSL Cert handshake timeout。下面是stacktrace:

代码语言:javascript
复制
2014-10-16 17:39:10,184 WARN  [org.apache.coyote.http11.Http11Processor] (http-0.0.0.0-8443-2) Exception getting SSL attributes: java.net.SocketException: SSL Cert handshake timeout  
  at org.apache.tomcat.util.net.jsse.JSSESupport.handShake(JSSESupport.java:178) [:6.1.0.Final]  
  at org.apache.tomcat.util.net.jsse.JSSESupport.getPeerCertificateChain(JSSESupport.java:138) [:6.1.0.Final]  
  at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:1144) [:6.1.0.Final]  
  at org.apache.coyote.Request.action(Request.java:352) [:6.1.0.Final]  
  at org.apache.catalina.connector.Request.getCertificateChain(Request.java:1112) [:6.1.0.Final]  
  at org.apache.catalina.authenticator.SSLAuthenticator.authenticate(SSLAuthenticator.java:132) [:6.1.0.Final]  
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:559) [:6.1.0.Final]  
  at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]  
  at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]  
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]  
  at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]  
  at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567) [:6.1.0.Final]  
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]  
  at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:631) [:6.1.0.Final]  
  at org.jboss.web.rewrite.RewriteValve.invoke(RewriteValve.java:273) [:6.1.0.Final]  
  at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]  
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]  
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]  
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]  
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]  
  at java.lang.Thread.run(Thread.java:745) [:1.7.0_71]  

当我切换clientAuth="true""want"时,它是有效的,但是使用"false"和使用CLIENT-CERT访问安全约束在JDK7中不起作用。我尝试调试JSSESupport.java,发现握手方法中有for周期,在周期中第一次进入时使用JDK6,并从InputStream浏览器窗口读取字节并请求我的客户端证书,但在JDK7中这不会发生,因为客户端没有发送他的证书,所以在方法的末尾抛出了错误。实际上,这个浏览器窗口是稍后打开的,当我提交我的证书时什么也没有发生,因为握手已经完成,结果是false。我尝试了Firefox,IE,Chrome,结果是一样的。如果有人能帮助我或给我一个建议,那就太好了。

EN

回答 2

Stack Overflow用户

发布于 2014-11-10 17:45:39

在我们的项目中,类似的错误来自jboss,但我现在记不清确切的错误了。在我们的例子中,我们跳过了它,应用程序运行得很好。

票数 0
EN

Stack Overflow用户

发布于 2014-11-11 22:36:07

因此,我进行了更多的调试,发现在JSSESupport.java:178中使用Java7时,当它试图从SSLSocket读取AppInputStream时,什么也没有发生。它尝试读取60次,最后如果客户端没有确认他对证书选择,这个"Handhake timeout“错误被抛出,在tomcat检查证书之后,如果它没有出现,我有日志"No certificate included with this request”,响应发送我错误,代码为401 SC_UNAUTHORIZED,进程停止,我的过滤器没有被调用。与Java6不同的是,当它第一次尝试从AppInputStream,读取时,我被要求选择我的客户端证书。我认为这个问题可能与Java7在安全领域的更改和SSL(TLS)的实现有关,或者与读取此AppInputStream,有关的某些同步问题,因为此证书请求是在抛出错误之后出现的,但响应中已经设置了错误代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26840639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档