Я пытаюсь подключиться к Tomcat через https на удаленном сервере; Я нашел много ответов, но никто не работал для меня; Я использую Apache, Tomcat 7 на Ubuntu Server 14.04.Tomcat 7 и неверный формат хранилища
Во-первых, я создал сертификат хранилищу запись:
keytool -genkey -alias tomcat -keyalg RSA
после того, как я ве отредактированный "/etc/tomcat7/server.xml", чтобы использовать SSL на порту 8443:
<Connector port="8443" SSLEnabled="true"
protocol="org.apache.coyote.http11.Http11Protocol"
keystoreType="JKS"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/usr/lib/jvm/java-7-openjdk-amd64/bin/keytool"
keystorePass="***********" keyAlias="tomcat"
clientAuth="false" sslProtocol="TLS"/>
где ********** - пароль; перезапуск Tomcat через:
sudo service tomcat7 restart
Я получаю следующее сообщение об ошибке в файле "/var/log/tomcat7/catalina.out":
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8443]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8443]]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:813)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:638)
at org.apache.catalina.startup.Catalina.load(Catalina.java:663)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:280)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:980)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
... 12 more
Caused by: java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
at java.security.KeyStore.load(KeyStore.java:1214)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:392)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:291)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:549)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:489)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:434)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:181)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:397)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
... 13 more
Тип Хранилище ключей JKS, я «ве проверить его с помощью команды:
$JAVA_HOME/bin/keytool -list
который вернулся:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
tomcat, 17-Oct-2015, PrivateKeyEntry,
Certificate fingerprint (SHA1): 33:14:32:DD:DA:20:BF:CF:70:32:F5:0E:E9:F1:C1:5B:4E:C3:DB:AB
где $ JAVA_HOME есть "/ usr/lib/jvm/java-7-openjdk-amd64";
Поэтому, когда я пытаюсь подключиться к «https://myServerIp:8443/» или «https://myDomainName:8443/« Я получаю сообщение «Не удалось подключиться».
'keytool' это программа, которая используется для управления основными магазинами, так что я думаю, путь для хранилища ключей файл ('/USR/Библиотека/JVM/Java-7-OpenJDK-amd64/бен/keytool') в вашей конфигурации tomcat неверно. – Titus
@Titus, если я запускаю '/ usr/lib/jvm/java-7-openjdk-amd64/bin/keytool -list' (что то же самое и при написании' $ JAVA_HOME/bin/keytool -list'), это дает мне данные в нижней части вопроса, означает ли это, что это правильный файл хранилища ключей? – Daniele
В системе Linux файл хранилища ключей сохраняется по умолчанию в домашней папке пользователя '/ home/userName/.keystore' – Titus