Почему tomcat не может загрузить самозаверяющий сертификат SSL? - PullRequest
0 голосов
/ 17 января 2011

У меня проблемы с загрузкой Tomcat для загрузки самозаверяющего сертификата.Я следовал инструкциям на этом сайте к письму, изменил мои коннекторы в файле server.xml, добавил ограничение безопасности в мой файл tomcat.confНиже приведен вывод моего catalina.out:

Using CATALINA_BASE:   /usr/share/tomcat5
Using CATALINA_HOME:   /usr/share/tomcat5
Using CATALINA_TMPDIR: /usr/share/tomcat5/temp
Using JRE_HOME:       /usr/lib/jvm/jre
Created MBeanServer with ID: -hnoxxr:gj0olj3z.0:s15425714.domainepardefaut.fr:1
17-Jan-11 2:13:25 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib64/gcj-4.1.2
17-Jan-11 2:13:25 AM org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8081
17-Jan-11 2:13:26 AM org.apache.tomcat.util.net.jsse.JSSESocketFactory getStore
SEVERE: Exception trying to load keystore /usr/share/tomcat5/webapps/.keystore
java.security.KeyStoreException: JKS
   at java.security.KeyStore.getInstance(libgcj.so.7rh)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.getKeyManagers(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(tomcat-util-5.5.23.jar.so)
   at org.apache.coyote.http11.Http11BaseProtocol.init(tomcat-http-5.5.23.jar.so)
   at org.apache.catalina.connector.Connector.initialize(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardService.initialize(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardServer.initialize(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.load(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.load(catalina-5.5.23.jar.so)
   at java.lang.reflect.Method.invoke(libgcj.so.7rh)
   at org.apache.catalina.startup.Bootstrap.load(bootstrap.jar.so)
   at org.apache.catalina.startup.Bootstrap.main(bootstrap.jar.so)
17-Jan-11 2:13:26 AM org.apache.coyote.http11.Http11BaseProtocol init
SEVERE: Error initializing endpoint
java.io.IOException: Exception trying to load keystore /usr/share/tomcat5/webapps/.keystore: JKS
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.getKeyManagers(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(tomcat-util-5.5.23.jar.so)
   at org.apache.coyote.http11.Http11BaseProtocol.init(tomcat-http-5.5.23.jar.so)
   at org.apache.catalina.connector.Connector.initialize(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardService.initialize(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardServer.initialize(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.load(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.load(catalina-5.5.23.jar.so)
   at java.lang.reflect.Method.invoke(libgcj.so.7rh)
   at org.apache.catalina.startup.Bootstrap.load(bootstrap.jar.so)
   at org.apache.catalina.startup.Bootstrap.main(bootstrap.jar.so)
17-Jan-11 2:13:26 AM org.apache.catalina.startup.Catalina load
SEVERE: Catalina.start
LifecycleException:  Protocol handler initialization failed: java.io.IOException: Exception trying to load keystore /usr/share/tomcat5/webapps/.keystore: JKS
   at org.apache.catalina.connector.Connector.initialize(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardService.initialize(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardServer.initialize(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.load(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.load(catalina-5.5.23.jar.so)
   at java.lang.reflect.Method.invoke(libgcj.so.7rh)
   at org.apache.catalina.startup.Bootstrap.load(bootstrap.jar.so)
   at org.apache.catalina.startup.Bootstrap.main(bootstrap.jar.so)
17-Jan-11 2:13:26 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 744 ms
17-Jan-11 2:13:26 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
17-Jan-11 2:13:26 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.23
17-Jan-11 2:13:26 AM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
17-Jan-11 2:13:26 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive myapp.war
17-Jan-11 2:13:26 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/share/tomcat5/webapps/myapp/WEB-INF/lib/servlet.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
17-Jan-11 2:13:27 AM org.apache.catalina.startup.TldConfig lifecycleEvent
SEVERE: Error processing TLD files for context path /myapp
javax.servlet.ServletException: Exception processing TLD at resource path /WEB-INF/struts-tiles.tld in context /myapp
   at org.apache.catalina.startup.TldConfig.tldScanTld(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.TldConfig.execute(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.TldConfig.lifecycleEvent(catalina-5.5.23.jar.so)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardContext.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.ContainerBase.addChildInternal(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.ContainerBase.addChild(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardHost.addChild(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.deployWAR(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.deployWARs(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.deployApps(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(catalina-5.5.23.jar.so)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.ContainerBase.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardHost.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.ContainerBase.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardEngine.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardService.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardServer.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.start(catalina-5.5.23.jar.so)
   at java.lang.reflect.Method.invoke(libgcj.so.7rh)
   at org.apache.catalina.startup.Bootstrap.start(bootstrap.jar.so)
   at org.apache.catalina.startup.Bootstrap.main(bootstrap.jar.so)
17-Jan-11 2:13:29 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/share/tomcat5/webapps/ROOT/WEB-INF/lib/servlet.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
17-Jan-11 2:13:29 AM org.apache.catalina.startup.TldConfig lifecycleEvent
SEVERE: Error processing TLD files for context path 
javax.servlet.ServletException: Exception processing TLD at resource path /WEB-INF/struts-tiles.tld in context 
   at org.apache.catalina.startup.TldConfig.tldScanTld(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.TldConfig.execute(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.TldConfig.lifecycleEvent(catalina-5.5.23.jar.so)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardContext.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.ContainerBase.addChildInternal(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.ContainerBase.addChild(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardHost.addChild(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.deployDirectory(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.deployDirectories(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.deployApps(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(catalina-5.5.23.jar.so)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.ContainerBase.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardHost.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.ContainerBase.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardEngine.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardService.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardServer.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.start(catalina-5.5.23.jar.so)
   at java.lang.reflect.Method.invoke(libgcj.so.7rh)
   at org.apache.catalina.startup.Bootstrap.start(bootstrap.jar.so)
   at org.apache.catalina.startup.Bootstrap.main(bootstrap.jar.so)
17-Jan-11 2:13:31 AM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8081
17-Jan-11 2:13:31 AM org.apache.catalina.connector.MapperListener init
INFO: Registering Hosts
17-Jan-11 2:13:31 AM org.apache.catalina.connector.MapperListener init
INFO: Registering WebModule Contexts
17-Jan-11 2:13:31 AM org.apache.catalina.connector.MapperListener init
INFO: Registering Servlets
17-Jan-11 2:13:31 AM org.apache.tomcat.util.net.jsse.JSSESocketFactory getStore
SEVERE: Exception trying to load keystore /usr/share/tomcat5/webapps/.keystore
java.security.KeyStoreException: JKS
   at java.security.KeyStore.getInstance(libgcj.so.7rh)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.getKeyManagers(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.startEndpoint(tomcat-util-5.5.23.jar.so)
   at org.apache.coyote.http11.Http11BaseProtocol.start(tomcat-http-5.5.23.jar.so)
   at org.apache.coyote.http11.Http11Protocol.start(tomcat-http-5.5.23.jar.so)
   at org.apache.catalina.connector.Connector.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardService.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardServer.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.start(catalina-5.5.23.jar.so)
   at java.lang.reflect.Method.invoke(libgcj.so.7rh)
   at org.apache.catalina.startup.Bootstrap.start(bootstrap.jar.so)
   at org.apache.catalina.startup.Bootstrap.main(bootstrap.jar.so)
17-Jan-11 2:13:31 AM org.apache.coyote.http11.Http11BaseProtocol start
SEVERE: Error starting endpoint
java.io.IOException: Exception trying to load keystore /usr/share/tomcat5/webapps/.keystore: JKS
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.getKeyManagers(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(tomcat-util-5.5.23.jar.so)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.startEndpoint(tomcat-util-5.5.23.jar.so)
   at org.apache.coyote.http11.Http11BaseProtocol.start(tomcat-http-5.5.23.jar.so)
   at org.apache.coyote.http11.Http11Protocol.start(tomcat-http-5.5.23.jar.so)
   at org.apache.catalina.connector.Connector.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardService.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardServer.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.start(catalina-5.5.23.jar.so)
   at java.lang.reflect.Method.invoke(libgcj.so.7rh)
   at org.apache.catalina.startup.Bootstrap.start(bootstrap.jar.so)
   at org.apache.catalina.startup.Bootstrap.main(bootstrap.jar.so)
17-Jan-11 2:13:31 AM org.apache.catalina.startup.Catalina start
SEVERE: Catalina.start: 
LifecycleException:  service.getName(): "Catalina";  Protocol handler start failed: java.io.IOException: Exception trying to load keystore /usr/share/tomcat5/webapps/.keystore: JKS
   at org.apache.catalina.connector.Connector.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardService.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.core.StandardServer.start(catalina-5.5.23.jar.so)
   at org.apache.catalina.startup.Catalina.start(catalina-5.5.23.jar.so)
   at java.lang.reflect.Method.invoke(libgcj.so.7rh)
   at org.apache.catalina.startup.Bootstrap.start(bootstrap.jar.so)
   at org.apache.catalina.startup.Bootstrap.main(bootstrap.jar.so)
17-Jan-11 2:13:31 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 5535 ms

Я сделал сканирование портов после запуска tomcat.Стандартный порт работает вместе с 8005, но порт SSL не существует.Я где-то пропускаю шаг?

Ответы [ 4 ]

2 голосов
/ 17 января 2011

Полагаю, вы используете tomcat 5.5, скомпилированный с gcj, в каком-то дистрибутиве linux (debian или ubuntu?) С java-1.5.0-gcj. Вы можете найти помощь по теме здесь: https://bugzilla.redhat.com/show_bug.cgi?id=238613

Проверьте, действительно ли имеется хранилище ключей, указанное в сообщении об исключении, и находится ли оно в формате JKS. Или укажите атрибут keystoreFile в вашем файле server.xml на файл cacerts, поставляемый вместе с вашей JVM (если мое предположение было правильным, должно быть /usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0/jre/lib / security / cacerts) и импортируйте туда свой самозаверяющий сертификат. Файл с исходными каскадами имеет пароль по умолчанию = changeit

Однако я предлагаю вам использовать sun-jvm или openjdk-1.6.0, который поставляется из вашего дистрибутива, чтобы избежать больших хлопот, особенно если это один из ваших первых ssl-развертываний.

Edit: Позвольте мне добавить сюда мою рабочую конфигурацию:

<Connector port="8443" maxHttpHeaderSize="8192"
       maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
       enableLookups="false" disableUploadTimeout="true"
       acceptCount="100" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" 
       keystoreFile="/etc/pki/java/cacerts" 
       keystorePass="changeit" keystoreType="JKS"
       keyAlias="tomcat"
/>

В хранилище ключей / etc / pki / java / cacerts я сгенерировал пару ключей:

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/pki/java/cacerts

Примечание: если вы не указали псевдоним ключа в server.xml, будет использоваться первая пара ключей, найденная в хранилище ключей.

Важное примечание: пароль хранилища ключей ДОЛЖЕН совпадать с паролем личного ключа!

1 голос
/ 17 января 2011

Вы пытаетесь использовать хранилище ключей формата JKS.Этот формат был определен Sun и не поддерживается GNU Classpath.

GNU Classpath может поддерживать хранилище ключей "PKCS12" (потому что это стандарт, в отличие от JKS).Новая команда в утилите keytool из среды выполнения Java 6 позволит вам «импортировать» существующее хранилище ключей JKS в новое хранилище ключей PKCS # 12.Конечно, GNU Classpath также не может выполнить это преобразование, но если вы используете продукт OpenJDK для преобразования, результирующее хранилище может работать с GNU Classpath во время выполнения.

0 голосов
/ 09 июня 2012

Если вы используете GNU jvm и keytool, вы можете добавить следующие параметры к соединителю Tomcat в server.xml, чтобы заставить его работать:

keystoreType="gkr"
algorithm="JessieX509"

Алгоритм упоминается в http://developer.classpath.org/doc/javax/net/ssl/KeyManagerFactory.html#getDefaultAlgorithm:

0 голосов
/ 17 января 2011

Вы используете GNU CLASSPATH, а не Java. Удалите его и установите JDK.

...