Java 阀门配置在tomcat中不工作?
我使用url访问我的应用程序,即Java 阀门配置在tomcat中不工作?,java,tomcat,ssl,tomcat-valve,Java,Tomcat,Ssl,Tomcat Valve,我使用url访问我的应用程序,即https://myIPAddress:8443/myWebApp/ 我已经创建了myWebApp.xml文件,其中包含以下上下文元素,并将其放置在\conf\Catalina\localhost\ <Context> <Valve className="org.apache.catalina.authenticator.MySSLAuthenticator"/> </Context> 我不知道这里少了什么?tomcat版本
https://myIPAddress:8443/myWebApp/
我已经创建了myWebApp.xml
文件,其中包含以下上下文元素,并将其放置在\conf\Catalina\localhost\
<Context>
<Valve className="org.apache.catalina.authenticator.MySSLAuthenticator"/>
</Context>
我不知道这里少了什么?tomcat版本是6.0.35在您的问题中没有提到相关的
领域
定义,这可能是导致错误的原因(空证书链)。如果没有与请求关联的主体(如果之前没有成功执行身份验证,则不太可能),则SSLAuthenticator
将调用身份验证域。但是,在您的情况下,这个领域可能不存在,或者它确实存在,但在某种程度上被错误配置,因此SSLAuthenticator无法解释它
您可以通过禁用自定义的myslauthenticator
来验证这一点,并首先使其与内置的SSLAuthenticator
一起工作。一旦你开始工作,那么试着扩展SSLAuthenticator。假设这就是你想要做的
还建议将日志记录级别设置为debug,因为您可能会发现从扩展类记录的有用信息:
及其父类
对于tomcat甚至无法识别的类,最有可能的答案是您已经在应用程序上下文中定义了它。Tomcat阀可与发动机
、主机
和上下文
关联,并按该顺序调用。因此,最有可能解释为什么tomcat永远不会到达您的阀门的答案是,内置的SSLAuthenticator
在引擎
级别捕获(并处理)请求。因此,后续的主机
和上下文
级处理永远不会达到
javax.net.ssl.SSLHandshakeException: null cert chain
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:266)
at sun.security.ssl.ServerHandshaker.clientCertificate(ServerHandshaker.java:1631)
at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:176)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
at java.io.InputStream.read(InputStream.java:101)
at org.apache.tomcat.util.net.jsse.JSSESupport.handShake(JSSESupport.java:181)
at org.apache.tomcat.util.net.jsse.JSSESupport.getPeerCertificateChain(JSSESupport.java:148)
at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:1120)
at org.apache.coyote.Request.action(Request.java:349)
at org.apache.catalina.authenticator.SSLAuthenticator.authenticate(SSLAuthenticator.java:135)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528)