Назад | Перейти на главную страницу

Настройка SSL на JBoss 5

Как я могу включить SSL на JBoss 5 в системе Linux (Red Hat - Fedora 8)?

На данный момент я сделал следующее:

(1) Создайте тестовое хранилище ключей.

(2) Поместите вновь созданный server.keystore в $ JBOSS_HOME / server / default / conf.

(3) Внесите следующие изменения в server.xml в $ JBOSS_HOME / server / default / deploy / jbossweb.sar, чтобы включить это:

<!-- 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="${jboss.server.home.dir}/conf/server.keystore"
       keystorePass="mypassword" sslProtocol = "TLS" />

(4) Проблема в том, что при запуске JBoss регистрирует это исключение (во время запуска) (но я все еще могу просмотреть все в http: // локальный: 8080 /):

03:59:54,780 ERROR [Http11Protocol] Error initializing endpoint

java.io.IOException: невозможно восстановить ключ в org.apache.tomcat.util.net.jsse.JSSESocketFactory.init (JSSESocketFactory.java:456) в org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocketFactory (JSSESocketFactory .java: 139) на org.apache.tomcat.util.net.JIoEndpoint.init (JIoEndpoint.java:498) на org.apache.coyote.http11.Http11Protocol.init (Http11Protocol.java:175) на org.apache. catalina.connector.Connector.initialize (Connector.java:1029) в org.apache.catalina.core.StandardService.initialize (StandardService.java:683) в org.apache.catalina.core.StandardServer.initialize (StandardServer.java: 821) в org.jboss.web.tomcat.service.deployers.TomcatService.startService (TomcatService.java:313)

Я знаю, что еще многое предстоит сделать, чтобы включить полную аутентификацию клиента SSL ...

У меня была точно такая же проблема.

http://forums.novell.com/novell-product-support-forums/identity-manager/im-userapp-workflow/321716-error-enables-ssl.html

"Проблема возникла из-за ошибки в Tomcat. Ошибка вызовет эту ошибку, если пароль хранилища ключей и пароль ключа не совпадают, как это было в моей настройке. Исправление состоит в том, чтобы просто воссоздать хранилище ключей с одинаковыми паролями. . "

Сейчас у меня работает.

Это может быть немного поздно, но, поскольку вы очень близки, кажется, стоит дать ответ:

  1. Это не ясно из вашего описания, но я предполагаю, что у вас есть сертификат сервера в хранилище ключей? Если нет, вам нужно это сделать - вы можете сгенерировать сертификат с помощью OpenSSL, если вы этого еще не сделали.

  2. Вам необходимо добавить новый параметр в server.xml, чтобы указать псевдоним, который будет использоваться для поиска сертификата в server.keystore. Итак, если псевдоним вашего сертификата был localhost, вам нужно добавить keyAlias="localhost" в ваш server.xml, чтобы он выглядел так:

    <Connector protocol="HTTP/1.1" SSLEnabled="true"
       port="8443" address="${jboss.bind.address}"
       scheme="https" secure="true" clientAuth="false"
       keystoreFile="${jboss.server.home.dir}/conf/server.keystore"
       keystorePass="mypassword" sslProtocol = "TLS" 
       keyAlias="localhost"/>

Замена localhost любым псевдонимом, который вы выбрали для сертификата в своем server.xml.

btw - в зависимости от ваших конкретных требований я склонен согласиться с Tactical Vim, что использование mod_ssl - лучший вариант.

Последнее замечание: настройка аутентификации клиента после того, как у вас работает сервер, относительно проста. Вам нужно новое хранилище ключей, которое будет содержать центры сертификации, которым доверяют подписывать сертификаты клиентов. Итак, у вас есть эти новые параметры для добавления truststoreFile, truststorePassword и clientAuth. Установка clientAuth на 'want' означает, что вам будет предложено пройти аутентификацию, но отмена не заблокирует вас, установка на true означает, что вы не сможете получить доступ к серверу, если вы не предоставите клиентский доступ (на этом этапе вы ' Возможно, я захочу отключить соединитель открытого текста). Два других параметра эквивалентны соответствующим параметрам хранилища ключей, но будьте очень осторожны с тем, какие сертификаты вы помещаете в хранилище доверенных сертификатов, поскольку любой сертификат, подписанный сертификатом в хранилище доверенных сертификатов, будет принят для аутентификации клиента (если вы задумаетесь об этом некоторое время, это будет иметь смысл).

Возможно, это не самый прямой ответ, который вы ищете, но после многих лет создания большого количества инфраструктуры на основе Tomcat я всегда использую для них Apache и mod_ssl, используя mod_jk (ajp13) для их подключения. Это полезно по многим причинам:

  • вы можете переложить всю статическую обработку файлов на Apache для повышения производительности
  • вы получаете доступ ко всем функциям mod_rewrite (и другим замечательным модулям)
  • настройка SSL с Apache не составляет труда, Tomcat даже не знает, что это канал SSL

...и так далее. Хотя Java-движок может обрабатывать SSL, это не одна из его сильных сторон в жизни и, как правило, доставляет больше хлопот, чем то, чего он стоит. Позвольте Java обрабатывать веб-приложения и их Java-код, позвольте Apache делать то, что он умеет лучше всего. Вы также обнаружите, что у mod_jk есть много отличных опций для предотвращения перегрузки движка вашего приложения; используя правильную комбинацию параметров, вы можете временно перенаправить своих пользователей чистым, красивым образом, когда экземпляры Tomcat не отвечают достаточно быстро (или вылетают / блокируются).

Лично я думаю, что проблема в том, что когда этот парень создал свой закрытый ключ в хранилище ключей, он дал ему неправильное имя псевдонима. Ему нужно дать ему псевдоним «кот». В противном случае tomcat будет думать, что хранилище ключей пусто, и не скажет вам, что это так.