Я перехожу из Websphere 8.x в JBoss 7.1, но у меня возникают проблемы с получением SSL-сертификатов в JBoss 7.1. Мы используем веб-службы внешних поставщиков через SSL.
В Websphere я бы сделал следующее:
Добавить поставщика в локальный магазин доверия WAS:
Используйте параметр "Получить из порта" в административной консоли, чтобы получить сертификат и решить проблему.
Выполните следующие шаги:
Но в JBoss не похоже, что есть такая возможность. Я играл с openssl, keytool для создания, добавлял сертификаты в хранилище ключей и пытался вносить изменения в файл standalone.xml. Я пробовал так много разных вещей, которые были предложены в разных результатах поиска, которые я пробовал, и потратил бесчисленные часы, пытаясь понять это.
Я получаю эту ошибку:
13: 08: 50,801 ОШИБКА [org.jboss.as.controller.management-operation] Ошибка операции ("добавить") - адрес: ([("подсистема" => "сеть"), ("коннектор" => "https "), (" ssl "=>" configuration ")]) - описание ошибки:" JBAS014803: дублировать ресурс [(\ "subsystem \" =>\"web \"), (\ "connector \" =>\" https\"), (\ ssl \" =>\"configuration \")] "
Выдает ошибку:
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
<ssl key-alias="jbosscerts" password="secret" certificate-key-file="D:\opt\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" certificate-file="C:/jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" cipher-suite="ALL" protocol="TLSv1"/>
<ssl key-alias="vendor1.com_cert" password="secret" certificate-key-file="C:\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" certificate-file="C:\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" cipher-suite="ALL" protocol="TLSv1"/>
<ssl key-alias="vendor2.com_cert" password="secret" certificate-key-file="D:\opt\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" certificate-file="C:\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" cipher-suite="ALL" protocol="TLSv1"/>
</connector>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
</virtual-server>
</subsystem>
Не бросает ошибку:
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
<ssl key-alias="jbosscerts" password="secret" certificate-key-file="D:\opt\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" certificate-file="C:/jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" cipher-suite="ALL" protocol="TLSv1"/>
</connector>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
</virtual-server>
</subsystem>
Мой вопрос заключается в следующем: как настроить несколько сертификатов SSL в JBoss, как это делает Websphere?
Для этого вам нужно будет добавить системные свойства. Поэтому в основном добавьте следующий фрагмент кода в ваш standalone.xml
сразу после <extensions>....</extensions>
:
<system-properties>
<property name="javax.net.ssl.trustStore" value="<location of cert>"/>
</system-properties>
<location of cert>
- это местоположение файла хранилища ключей Java, содержащего коллекцию сертификатов CA, которым доверяет этот процесс приложения (хранилище доверия). Обратите внимание, что в Windows указанный путь должен использовать передние косые черты, /
, вместо \
.