Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jboss AS 6.1.0与Java7握手超时_Java_Ssl_Jboss_Socketexception_Sslhandshakeexception - Fatal编程技术网

Jboss AS 6.1.0与Java7握手超时

Jboss AS 6.1.0与Java7握手超时,java,ssl,jboss,socketexception,sslhandshakeexception,Java,Ssl,Jboss,Socketexception,Sslhandshakeexception,我在JBoss6.1.0中遇到了SSL问题。我使用CLIEN-CERT来限制客户端证书的某些安全约束。我配置了所有需要的placesweb.xml、jboss-web.xml、jboss-loggin、server.xml、jboss服务。当我用JDK6启动服务器时,一切正常,但当我用JDK7启动服务器并尝试访问安全约束时,我会得到错误异常获取SSL属性:java.net.SocketException:SSL证书握手超时。这里是stacktrace: 2014-10-16 17:39:10,1

我在JBoss6.1.0中遇到了SSL问题。我使用CLIEN-CERT来限制客户端证书的某些安全约束。我配置了所有需要的placesweb.xml、jboss-web.xml、jboss-loggin、server.xml、jboss服务。当我用JDK6启动服务器时,一切正常,但当我用JDK7启动服务器并尝试访问安全约束时,我会得到错误异常获取SSL属性:java.net.SocketException:SSL证书握手超时。这里是stacktrace:

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或希望它工作时,但是使用false和使用CLIENT-CERT访问安全约束对JDK7不起作用。
我试着调试JSSESupport.java,发现在握手方法中有for cycle,而在JDK6中,当在该循环中第一次输入并从InputStream浏览器窗口读取字节时,会打开并请求我的客户端证书,但在JDK7中这不会发生,由于客户端未发送其证书,因此在方法末尾引发错误。实际上,这个浏览器窗口是在稍后打开的,当我提交证书时,什么也没有发生,因为握手完成时结果是错误的。我尝试了Firefox,IE,Chrome,结果是一样的。如果有人能帮助我或给我一个建议,那就太好了。

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

因此,我进行了更多的调试,发现在JSSESupport.Java:178中的Java 7尝试从SSLSocket读取AppInputStream时,什么都没有发生。它尝试读取60次,最后,如果客户端未确认对证书的选择,则抛出此握手超时错误,在tomcat检查证书之后,如果证书没有显示,我的请求和响应中没有包含任何证书。发送给我错误代码401 SC_未经授权,进程停止,我的过滤器未被调用。 与Java6不同的是,当它第一次尝试从AppInputStream读取时,我被要求选择我的客户端证书。
我认为这个问题可能与Java 7在安全领域的变化和SSLTL的实现有关,或者与从这个AppInputStream读取的同步问题有关,因为这个证书请求是在抛出错误之后发出的,但是响应中已经设置了错误代码。

您能试着记住错误是什么吗?在我的情况下,问题是我有一个SPRING筛选器,我必须在其中获取证书并执行一些逻辑,当我出现此错误时,我的筛选器不工作不被调用我不知道为什么…目前我无法访问我公司的笔记本电脑,因为我第二天离开办公室2天…你找到解决方案了吗?我们在尝试更新DoJava1.7时也遇到了同样的问题。解决方案是修补JSSEsupperHandshake,而不是byte[]b=新字节[1];使用新字节[0]。这应该适合Java7在从InputStream读取时所做的更改,并且应该可以工作。