配置tomcat的SSL双向握手中,由于6.0.33版本中默认启用了APR(APR是通过JNI访问的可移植库,可以提高Tomcat的性能和伸缩性),所以采用传统的配置方式(如下)会报异常;
传统的SSL配置:
-
<Connectorport="443"protocol="HTTP/1.1"SSLEnabled="true"
-
maxThreads="150"scheme="https"secure="true"
-
clientAuth="true"sslProtocol="TLS"
-
keystoreFile="conf/keystore/test.jks"keystorePass="111111"
-
truststoreFile="conf/keystore/test.jks"truststorePass="111111"
异常如下:
-
2011-10-279:26:03org.apache.coyote.http11.Http11AprProtocolinit
-
严重:Errorinitializingendpoint
-
java.lang.Exception:NoCertificatefilespecifiedorinvalidfileformat
-
atorg.apache.tomcat.jni.SSLContext.setCertificate(NativeMethod)
-
atorg.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:733)
-
atorg.apache.coyote.http11.Http11AprProtocol.init(Http11AprProtocol.java:107)
-
atorg.apache.catalina.connector.Connector.initialize(Connector.java:1022)
-
atorg.apache.catalina.core.StandardService.initialize(StandardService.java:703)
-
atorg.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
-
atorg.apache.catalina.startup.Catalina.load(Catalina.java:538)
-
atorg.apache.catalina.startup.Catalina.load(Catalina.java:562)
-
atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
-
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
-
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
-
atjava.lang.reflect.Method.invoke(Method.java:585)
-
atorg.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
-
atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
-
2011-10-279:26:03org.apache.catalina.core.StandardServiceinitialize
-
严重:Failedtoinitializeconnector[Connector[HTTP/1.1-443]]
-
LifecycleException:Protocolhandlerinitializationfailed:java.lang.Exception:NoCertificatefilespecifiedorinvalidfileformat
-
atorg.apache.catalina.connector.Connector.initialize(Connector.java:1024)
-
atorg.apache.catalina.core.StandardService.initialize(StandardService.java:703)
-
atorg.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
-
atorg.apache.catalina.startup.Catalina.load(Catalina.java:538)
-
atorg.apache.catalina.startup.Catalina.load(Catalina.java:562)
-
atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
-
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
-
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
-
atjava.lang.reflect.Method.invoke(Method.java:585)
-
atorg.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
-
atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
解决办法是采用下面的配置:
-
<Connectorport="443"protocol="org.apache.coyote.http11.Http11Protocol"SSLEnabled="true"
-
maxThreads="150"scheme="https"secure="true"
-
clientAuth="true"sslProtocol="TLS"
-
keystoreFile="conf/keystore/testpsira.jks"keystorePass="111111"
-
truststoreFile="conf/keystore/testpsira.jks"truststorePass="111111"
其实就是将protocol="HTTP/1.1"替换为protocol="org.apache.coyote.http11.Http11Protocol",问题得以解决;
APR给Tomcat的性能提升起到很大作用,建议配置APR方式。
题外话:
如果辨别Tomcat是否采用APR:
启动Tomcat时,如果采用APR,日志中会有如下信息:
-
信息:APRcapabilities:IPv6[true],sendfile[true],acceptfilters[false],random[true].
如果没有采用APR,启动时则显示类似的信息:
-
信息:TheAPRbasedApacheTomcatNativelibrarywhichallowsoptimalperformanceinproductionenvironmentswasnotfoundonthejava.library.path:....后面省略
转
分享到:
相关推荐
TOMCAT6.0.33安装版和解压版 内含2个TOMCAT 好东西 很好用 用安装版直接安装就是很简单的
tomcat6.0.33 tomcat6.0.33 tomcat6.0.33 tomcat6.0.33 tomcat6.0.33
apache-tomcat -6.0.33,直接解压,放入项目到webapp下,直接启动tomcat
apache-tomcat-6.0.33-src tomcat6.0.33源代码 看源代码 学开发
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器。Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun ...
绿色tomcate6
apache-tomcat-6.0.33
绿色版的apache-tomcat-6.0.33
apache-tomcat-6.0.33.zip
绿色解压版apache-tomcat-6.0.33 无毒、自用、解压即可使用不需要安装
配置web项目
tomcat-Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目
apache-tomcat-6.0.33.rar