Настройка HTTPS для JBoss 5.1.0 GA - PullRequest
0 голосов
/ 19 января 2011

Я нахожусь в процессе перемещения моего приложения с HTTP на HTTPS и, похоже, столкнулся с проблемой.

Вот что я сделал на основе этих инструкций :

  1. Укажите имя хоста для компьютера, на котором размещен сервер. Т.е .: localhost для этих инструкций
  2. Определите тип сервера jBoss (все, по умолчанию, производство). Т.е.: экотрак по этим инструкциям
  3. jBoss рекомендует использовать тот же файл, что и для хранилища ключей и доверенных лиц. Это будет server.keystore. При первичной установке не должно быть хранилища server.keystore в папкеdefault / conf. Если он у вас есть, вы должны решить, следует ли его удалить (использовать эти инструкции) или адаптировать инструкции в соответствии с вашей ситуацией.
  4. Создание хранилища ключей и закрытого ключа:
    • Откройте командную строку или оболочку и перейдите в папку по умолчанию / conf.
    • keytool -genkey -alias jbosskey -keypass changeit -keyalg RSA -keystore server.keystore
    • Ответьте на запросы. Используйте myHostname при запросе имени / фамилии. Это очень важно.
    • server.keystore генерируется.
    • keytool -list -keystore server.keystore
    • Вы должны увидеть PrivateKeyEntry с именем jbosskey в списке.
  5. Генерация и хранение сертификата.
    • keytool -export -alias jbosskey -keypass changeit -file server.crt -keystore server.keystore
    • server.crt генерируется.
    • keytool -import -alias jbosscert -keypass changeit -file server.crt -keystore server.keystore
    • Вы получаете предупреждение, что оно уже существует в хранилище ключей. Игнорируй это. Это потому, что Java ожидает отдельное хранилище ключей и файлы trustore, а мы используем только один.
    • keytool -list -keystore server.keystore
    • Вы должны увидеть в списке TrustedCertEntry с именем jbosscert.

В моем server.xml у меня есть следующее:

  <!-- SSL/TLS Connector configuration using the admin devl guide keystore-->
  <Connector protocol="HTTP/1.1" SSLEnabled="true" 
       port="8443" address="${jboss.bind.address}"
       scheme="https" secure="true" clientAuth="false" 
       keystoreFile="C:/dev/server/jboss-5.1.0.GA/server/ecotrak/conf/server.keystore"
       keystorePass="password" sslProtocol = "TLS" keyAlias="jbosskey" />

Когда я запускаю сервер, у меня есть следующее:

 call %JBOSS_HOME%\bin\run.bat -c default -b 0.0.0.0 -Djavax.net.ssl.trustStore=C:/dev/server/jboss-5.1.0.GA/server/ecotrak/conf/server.keystore

Вот что я получаю в своем лог-файле:

00:09:03,110 INFO [AprLifecycleListener] The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\dev\jdk\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\dev\jdk\jre\bin;native

00:09:03,197 INFO [Http11Protocol] Initializing Coyote HTTP/1.1 on http-localhost%2F127.0.0.1-8080

00:09:03,214 INFO [AjpProtocol] Initializing Coyote AJP/1.3 on ajp-localhost%2F127.0.0.1-8009

00:09:03,261 ERROR [Http11Protocol] Error initializing endpoint

java.io.IOException: Cannot recover key

at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:456)

at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:139)

Еще один раздел журнала

00:09:03,265 ERROR [AbstractKernelController] Error installing to Start: name=WebServer state=Create

LifecycleException: Protocol handler initialization failed: java.io.IOException: Cannot recover key

at org.apache.catalina.connector.Connector.initialize(Connector.java:1031)

at org.apache.catalina.core.StandardService.initialize(StandardService.java:683)

РАЗМЕЩЕНИЯ В ОШИБКАХ:

Deployment "WebServer" is in error due to the following reason(s): LifecycleException: Protocol handler initialization failed: java.io.IOException: Cannot recover key

Deployment "jboss.web:service=WebServer" is in error due to the following reason(s): ** NOT FOUND Depends on 'jboss.web:service=WebServer' **

Какой-нибудь идеал относительно того, что здесь происходит?


Update

Я нашел свою ошибку - я перепутал пароли между хранилищем ключей и сертификатом. После того, как это было исправлено, я теперь могу запустить сайт под HTTPS

Ответы [ 3 ]

3 голосов
/ 07 сентября 2012

Я следовал приведенным выше инструкциям и получил те же ошибки, о которых вы сообщили.Я не понял ваше обновление и поэтому написал командный файл со следующим:

c:
cd "/opt/fg/jboss-5.1.0.GA/server/default/conf"
REM create the server.keystore file - will fail if it already exists
keytool -genkey -alias jbosskey -keypass changeit -keyalg RSA -keystore server.keystore -storepass changeit -dname "CN=localhost, OU=MY_DEPARTMENT, O=MY_COMPANY, L=MY_CITY, S=MY_STATE, C=US"

REM display what was made
keytool -list -keystore server.keystore -storepass changeit

REM generate and store the certificate 
keytool -export -alias jbosskey -keypass changeit -file server.crt -keystore server.keystore -storepass changeit

keytool -import -alias jbosscert -keypass changeit -file server.crt -keystore server.keystore -storepass changeit

REM display what was made
keytool -list -keystore server.keystore -storepass changeit

Это помогло мне увидеть, где были установлены все пароли.Первоначально я скопировал и вставил команды, не читая их.Я не заметил, что в некоторые команды встроены пароли.Внезапно ваш обновленный пост стал для меня гораздо более понятным.

Для всех, кто сталкивается с такими же проблемами, в любое время вы видите «changeit» в файле bat, который я написал, замените его своим паролем.

Вы также захотите изменить имя компьютера, отдел, организацию, штат и страну в приведенном выше сценарии.

Теперь JBoss, кажется, запускается правильно для меня.

Спасибо за пост и обновление.

2 голосов
/ 11 июня 2014

В моем случае пароль хранилища ключей и пароль псевдонима были разными.Они должны быть одинаковыми (по крайней мере, в Tomcat).

1 голос
/ 10 октября 2013

Другая причина этой ошибки заключается в том, что хранилище ключей использует высококачественное шифрование.Если это правда, вам нужно установить Java Cryptography Extension, чтобы увеличить поддержку уровня шифрования java (не включается по умолчанию из-за правил экспорта США)

Отметьте это JCE установить мини-инструкции как это сделатьthis.

JCE для jre7 - здесь .Для тех, кто все еще использует jre6, проверьте эту ссылку .

...