2012/3/16 Newel, David <david.ne...@pearson.com>: > Hi, > > > > I'm experiencing a problem with creating an SSL Connector in Tomcat > 7.0.26. We intend to use a database-based keystore, which means that we > are using a custom-made Provider which does not use the 'keystoreFile' > tag. To try to prevent Tomcat from trying to open a file we specify the > Connector in this way: > > > > <Connector SSLEnabled="true" URIEncoding="UTF-8" > clientAuth="false" > > keyAlias="TestCert" keystoreFile="" keystoreType="Custom" > port="443" > > protocol="HTTP/1.1" scheme="https" secure="true" > sslProtocol="TLS"/> > > > > This used to work in Tomcat 6.0.32, but when we upgraded to Tomcat 7.0, > this exception gets thrown in the error stream : > > > > SEVERE: Failed to load keystore type Custom with path E:\Program > Files\Application\configuration\services\tomcat\ due to E:\Program > Files\Application\configuration\services\tomcat (Access is denied) > > java.io.FileNotFoundException: E:\Program > Files\Application\configuration\services\tomcat (Access is denied) > > at java.io.FileInputStream.open(Native Method) > > at java.io.FileInputStream.<init>(Unknown Source) > > at > org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFac > tory.java:400) > > at > org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocket > Factory.java:306) > > at > org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESoc > ketFactory.java:565) > > at > org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESoc > ketFactory.java:505) > > at > org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory > .java:449) > > at > org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocke > tFactory.java:158) > > at > org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:378) > > at > org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:5 > 54) > > at > org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:409) > > at > org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11J > sseProtocol.java:119) > > at > org.apache.catalina.connector.Connector.initInternal(Connector.java:956) > > at > org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) > > at > org.apache.catalina.core.StandardService.initInternal(StandardService.ja > va:559) > > at > org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) > > at > org.apache.catalina.core.StandardServer.initInternal(StandardServer.java > :815) > > at > org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) > > at > org.apache.catalina.startup.Catalina.load(Catalina.java:594) > > at > org.apache.catalina.startup.Catalina.load(Catalina.java:619) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown > Source) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > > at java.lang.reflect.Method.invoke(Unknown Source) > > at > org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) > > at > org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449) > > > > Is this a bug in Tomcat 7.0 or is there an alternative method we're > supposed to use in order to prevent it from loading a keystoreFile from > the file system? > > > > I took a look at the source through a debugger and found the area in > JSSESocketFactory where it reads this file, and it seems as though > specifying "" doesn't work correctly anymore because it tries to map a > relative path to catalina.base
I agree that this is an issue. Please file a bug in Bugzilla. Looking at the code, java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java#getStore(...) if(!("PKCS11".equalsIgnoreCase(type) || "".equalsIgnoreCase(path))) { and that happens before appending it to CATALINA_BASE. But in AbstractEndpoint#setKeystoreFile(String) the path is always converted to absolute and thus the above check for "" value fails to work. BTW, I wonder what will happen if you specify "NUL" (the Windows equivalent to /dev/null) as the value. Best regards, Konstantin Kolinko --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org