解决tomcat6.0.33 配置SSL时报“No Certificate file specified or invalid file format”异常

 在配置tomcat的SSL双向握手中,由于6.0.33版本中默认启用了APR(APR是通过JNI访问的可移植库,可以提高Tomcat的性能和伸缩性),所以采用传统的配置方式(如下)会报异常;

 

传统的SSL配置:

<Connector port="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-27 9:26:03 org.apache.coyote.http11.Http11AprProtocol init
严重: Error initializing endpoint
java.lang.Exception: No Certificate file specified or invalid file format
	at org.apache.tomcat.jni.SSLContext.setCertificate(Native Method)
	at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:733)
	at org.apache.coyote.http11.Http11AprProtocol.init(Http11AprProtocol.java:107)
	at org.apache.catalina.connector.Connector.initialize(Connector.java:1022)
	at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
	at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2011-10-27 9:26:03 org.apache.catalina.core.StandardService initialize
严重: Failed to initialize connector [Connector[HTTP/1.1-443]]
LifecycleException:  Protocol handler initialization failed: java.lang.Exception: No Certificate file specified or invalid file format
	at org.apache.catalina.connector.Connector.initialize(Connector.java:1024)
	at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
	at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

 解决办法是采用下面的配置:

<Connector port="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,日志中会有如下信息:

信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

 

如果没有采用APR,启动时则显示类似的信息:

信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ....后面省略

 

Tomcat6.0.33版本自动集成了APR,之前的版本没有集成,需要手工配置,网上搜索会有很多这方面的教程。

 

pbkiller2.5.18 PB反编译 好像已经有新版本了 pbkiller2.5.18 PB反编译 (1 folders, 9 files, 4.43 MB, 4.89 MB in total.) kernel.dat 25.57 KB PBKiller.exe 2.23 MB vm117.dat 435.41 KB vm149.dat 466.08 KB vm169.dat 492.35 KB vm196.dat 509.56 KB vm82.dat 315.81 KB   undw (4 folders, 2 files, 1.36 KB, 474.70 KB in total.)   undw60 (0 folders, 6 files, 109.86 KB, 109.86 KB in total.) PBLibrary.dll 42.50 KB undw.exe 27.00 KB undw.pbd 16.00 KB undw.pbl 23.00 KB   undw70 (0 folders, 6 files, 113.36 KB, 113.36 KB in total.) PBLibrary.dll 42.50 KB undw.exe 29.50 KB undw.pbd 16.00 KB undw.pbl 24.00 KB   undw80 (0 folders, 9 files, 129.10 KB, 129.10 KB in total.) PBLibrary.dll 42.50 KB undw.exe 32.00 KB undw.pbd 16.00 KB undw.pbl 24.00 KB undw.pbt 98 bytes undw.pbw 92 bytes undw80.rar 13.06 KB   undw90 (0 folders, 8 files, 121.04 KB, 121.04 KB in total.) PBLibrary.dll 42.50 KB undw.exe 32.00 KB undw.pbd 17.00 KB undw.pbl 28.00 KB undw.pbt 98 bytes undw.pbw 92 bytes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值