Hello,
I tried 7.0.2 from 6.0.2X with an identical config (I looked at the migration
guide--no changes needed for my config).
With 7.0.2, my SSL connector failed to start because "password verification
failed." The logged password and jks file on the in the WARNING an SEVERE log
statements are correct. Also, I can reliably revert to tomcat 6.0.X with the
same password and keystore with no error.
Below is error log output as well as my server.xml config. I also narrowed down
the server.xml config to the minimal changes from the stock server.xml (I have
elided the real keystore and password).
This may be irrelevant, but my keypass had a '$' character in it, but that has
always worked in the past.
Any changes to keystore/password handling that would make 7.0.2 not backward
compatible?
Thank you!
Armando
Aug 18, 2010 6:35:47 PM org.apache.catalina.startup.SetAllPropertiesRule begin
WARNING: [SetAllPropertiesRule]{Server/Service/Connector} Setting property
'keypass' to 'XXXXXX' did not find a matching property.
Aug 18, 2010 6:35:47 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-80
Aug 18, 2010 6:35:47 PM org.apache.tomcat.util.net.jsse.JSSESocketFactory
getStore
SEVERE: Failed to load keystore type JKS with path /path/to/conf/XXXXXXXX.jks
due to Keystore was tampered with, or password was incorrect
java.io.IOException: Keystore was tampered with, or password was incorrect
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:771)
at
sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
at java.security.KeyStore.load(KeyStore.java:1185)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:380)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:289)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:524)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:455)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:137)
at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:357)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:125)
at
org.apache.catalina.connector.Connector.initInternal(Connector.java:873)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at
org.apache.catalina.core.StandardService.initInternal(StandardService.java:546)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at
org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:702)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at org.apache.catalina.startup.Catalina.load(Catalina.java:537)
at org.apache.catalina.startup.Catalina.load(Catalina.java:560)
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:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.security.UnrecoverableKeyException: Password verification failed
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:769)
... 23 more
Aug 18, 2010 6:35:47 PM org.apache.coyote.http11.Http11Protocol init
SEVERE: Error initializing endpoint
java.io.IOException: Keystore was tampered with, or password was incorrect
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:771)
at
sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
at java.security.KeyStore.load(KeyStore.java:1185)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:380)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:289)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:524)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:455)
at
org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:137)
at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:357)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:125)
at
org.apache.catalina.connector.Connector.initInternal(Connector.java:873)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at
org.apache.catalina.core.StandardService.initInternal(StandardService.java:546)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at
org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:702)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at org.apache.catalina.startup.Catalina.load(Catalina.java:537)
at org.apache.catalina.startup.Catalina.load(Catalina.java:560)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccesso
rImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.security.UnrecoverableKeyException: Password verification failed
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:769)
... 23 more
Aug 18, 2010 6:35:47 PM org.apache.catalina.core.StandardService initInternal
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-443]]
LifecycleException: Protocol handler initialization failed:
java.io.IOException: Keystore was tampered with, or password was incorrect
at
org.apache.catalina.connector.Connector.initInternal(Connector.java:875)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at
org.apache.catalina.core.StandardService.initInternal(StandardService.java:546)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at
org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:702)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at org.apache.catalina.startup.Catalina.load(Catalina.java:537)
at org.apache.catalina.startup.Catalina.load(Catalina.java:560)
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:597)
Here is a diff of minimal server.xml changes against the stock 7.0.2 server.xml
that reproduce the problem.
--- old 2010-08-18 17:19:36.000000000 -0700
+++ new 2010-08-18 17:18:30.000000000 -0700
@@ -22,7 +22,7 @@
<Server port="8005" shutdown="SHUTDOWN">
<!--APR library loader. Documentation at /docs/apr.html -->
- <Listener className="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on" />
+ <!-- DISABLE: apr not used <Listener
className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> -->
<!--Initialize Jasper prior to webapps are loaded. Documentation at
/docs/jasper-howto.html -->
<Listener className="org.apache.catalina.core.JasperListener" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
@@ -51,10 +51,13 @@
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more
named thread pools-->
- <!--
- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
- maxThreads="150" minSpareThreads="4"/>
+ <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
+ maxThreads="500" minSpareThreads="50"/>
+
<!-- A "Connector" represents an endpoint by which requests are received
@@ -62,11 +65,27 @@
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
- Define a non-SSL HTTP/1.1 Connector on port 8080
+ Define a non-SSL HTTP/1.1 Connector on port 80
-->
- <Connector port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" />
+ <Connector executor="tomcatThreadPool" URIEncoding="UTF-8" server="PC"
+ port="80" protocol="HTTP/1.1" enableLookups="false"
acceptCount="100"
+ redirectPort="443"
+ disableUploadTimeout="true" connectionTimeout="20000"
+ compression="on" compressionMinSize="2048"
+
compressableMimeType="text/html,text/css,text/xml,text/javascript,application/x-javascript,application/javascript"
/>
+
+ <Connector executor="tomcatThreadPool" URIEncoding="UTF-8" server="PC"
+ port="443" protocol="HTTP/1.1" enableLookups="false"
acceptCount="100"
+ disableUploadTimeout="true" connectionTimeout="20000"
+ SSLEnabled="true" secure="true" keyAlias="server"
keystoreFile="conf/XXXXXXXX.jks" keypass="XXXXXXX" clientAuth="false"
sslProtocol="TLS"
+ compression="on" compressionMinSize="2048"
+
compressableMimeType="text/html,text/css,text/xml,text/javascript,application/x-javascript,application/javascript"
/>
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
@@ -84,9 +103,9 @@
clientAuth="false" sslProtocol="TLS" />
-->
- <!-- Define an AJP 1.3 Connector on port 8009 -->
+ <!-- Define an AJP 1.3 Connector on port 8009
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-
+ -->
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]