В этом руководстве показано, как установить SSL-сертификат на JBoss EAP и WildFly, используя keytool и подсистему безопасности Elytron. Если у вас еще нет файлов сертификата, в первом разделе описано, как сгенерировать CSR.
Замечание о версиях: современные версии JBoss EAP (7.1 и более поздние, включая EAP 8) и последние релизы WildFly настраивают HTTPS через подсистему elytron, подключенную к https-listener Undertow. Старый метод security-realm и устаревшие коннекторы Tomcat или Jetty признаны устаревшими, поэтому в данном руководстве используется актуальный подход.
Мы также записали видео, которое проведет вас через весь процесс. Вы можете посмотреть видео, прочитать инструкции или сделать и то, и другое. Видео доступно ниже.
Генерация кода CSR на JBoss
CSR (запрос на подпись сертификата) — это блок закодированного текста, который вы отправляете в удостоверяющий центр (CA) при заказе сертификата. Он содержит данные о вашем домене и организации, которые CA использует для проверки запроса. При генерации CSR также создается соответствующий приватный ключ, который остается на вашем сервере и требуется при установке.
У вас есть два варианта:
- Используйте наш Генератор CSR, чтобы создать CSR автоматически.
- Следуйте нашему пошаговому руководству по генерации CSR на JBoss.
На JBoss CSR генерируется с помощью keytool из хранилища ключей .jks или .p12. Запомните псевдоним (alias) и имя хранилища ключей, которые вы сейчас выберете: позже вам нужно будет импортировать подписанный сертификат обратно в этот же псевдоним. Отправьте CSR в CA при оформлении заказа, а после выпуска сертификата переходите к установке ниже.
Установка SSL-сертификата на сервере JBoss
Шаг 1: Подготовьте файлы сертификата
После проверки CA отправит вам файлы сертификата по электронной почте, обычно в архиве ZIP. Распакуйте его. У вас должны быть:
- Ваш основной сертификат (файл .crt, .cer или .pem).
- Промежуточные сертификаты, часто поставляемые в виде файла .ca-bundle (CA-бандл). Некоторые CA также включают корневой сертификат.
- Хранилище ключей (.jks или .p12), которое вы создали вместе с CSR и в котором хранится ваш приватный ключ под псевдонимом, выбранным при генерации CSR.
Держите эти файлы вместе и скопируйте их на сервер, например, в каталог конфигурации JBoss ($JBOSS_HOME/standalone/configuration/). Если файл открывается как текст, вы можете убедиться, что он содержит ожидаемые строки BEGIN CERTIFICATE и END CERTIFICATE.
Шаг 2: Импортируйте цепочку CA в хранилище ключей
Сначала импортируйте промежуточные (и корневой, если он предоставлен) сертификаты, чтобы keytool мог построить полную цепочку доверия. Используйте то же хранилище ключей, в котором находится ваш приватный ключ, и присвойте каждому сертификату CA свой собственный псевдоним:
keytool -import -trustcacerts -alias root -file root.crt -keystore your_keystore.jks
keytool -import -trustcacerts -alias intermediate -file intermediate.crt -keystore your_keystore.jks
Если ваш CA прислал единый файл .ca-bundle, импортируйте его под одним псевдонимом (например, -alias intermediate). При запросе введите пароль хранилища ключей и подтвердите доверие. Эти записи являются доверенными сертификатами, а не записями ключей, поэтому они не влияют на ваш приватный ключ.
Шаг 3: Импортируйте подписанный сертификат в псевдоним вашего ключа
Теперь импортируйте подписанный сертификат (ответ от CA) в тот же псевдоним, который вы использовали при генерации CSR. Поскольку этот псевдоним уже содержит приватный ключ, keytool воспринимает это как ответ на сертификат и заменяет временный самоподписанный сертификат подписанной CA цепочкой, сохраняя ключ нетронутым:
keytool -import -trustcacerts -alias your_csr_alias -file your_domain.crt -keystore your_keystore.jks
Замените your_csr_alias на псевдоним, использованный при генерации CSR, и your_keystore.jks на имя вашего хранилища ключей. При успешном выполнении keytool выводит сообщение Certificate reply was installed in keystore.
Важно: не придумывайте здесь новый псевдоним. Импорт ответа под новым псевдонимом создаст запись доверенного сертификата без приватного ключа, цепочка будет утрачена, и сервер не сможет завершить рукопожатие TLS. Если вы видите сообщение Failed to establish chain from reply, это означает, что промежуточный или корневой сертификат из Шага 2 отсутствует в хранилище ключей.
Вы можете проверить результат — теперь для псевдонима должна отображаться цепочка сертификатов длиной более 1:
keytool -list -v -alias your_csr_alias -keystore your_keystore.jks
Шаг 4: Настройте HTTPS в подсистеме Elytron
Поместите хранилище ключей в $JBOSS_HOME/standalone/configuration/, затем определите key-store, key-manager и server-ssl-context Elytron. Самый быстрый способ — использовать интерфейс командной строки управления. Запустите сервер, подключитесь с помощью jboss-cli.sh --connect и выполните пакетную команду, чтобы изменения применились сразу:
batch
/subsystem=elytron/key-store=httpsKS:add(path=your_keystore.jks, relative-to=jboss.server.config.dir, credential-reference={clear-text=your_keystore_password}, type=JKS)
/subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS, credential-reference={clear-text=your_keystore_password})
/subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM, protocols=["TLSv1.3","TLSv1.2"])
run-batch
Затем укажите новому https-listener Undertow на новый ssl-context. Undertow не может одновременно ссылаться на устаревший security-realm и на ssl-context Elytron, поэтому удалите старую ссылку и установите новую в одном пакете:
batch
/subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=httpsSSC)
run-batch
Если вы предпочитаете редактировать standalone.xml напрямую (при остановленном сервере), эквивалентная конфигурация выглядит так внутри подсистемы elytron:
<tls>
<key-stores>
<key-store name="httpsKS">
<credential-reference clear-text="your_keystore_password"/>
<implementation type="JKS"/>
<file path="your_keystore.jks" relative-to="jboss.server.config.dir"/>
</key-store>
</key-stores>
<key-managers>
<key-manager name="httpsKM" key-store="httpsKS">
<credential-reference clear-text="your_keystore_password"/>
</key-manager>
</key-managers>
<server-ssl-contexts>
<server-ssl-context name="httpsSSC" key-manager="httpsKM" protocols="TLSv1.3 TLSv1.2"/>
</server-ssl-contexts>
</tls>
А соответствующий listener в подсистеме undertow ссылается на этот ssl-context:
<https-listener name="https" socket-binding="https" ssl-context="httpsSSC" enable-http2="true"/>
Ограничение protocols до TLS 1.3 и TLS 1.2 отключает устаревшие TLS 1.0 и 1.1. Стандартный порт HTTPS — 8443; сопоставьте его с портом 443 с помощью балансировщика нагрузки или перенаправления портов, если вам нужен стандартный порт.
Шаг 5: Перезапустите JBoss
Если вы редактировали standalone.xml вручную, перезапустите сервер, чтобы загрузить новую конфигурацию. Если вы использовали пакетные команды CLI выше, изменения применяются сразу, но перезагрузка подтвердит чистый запуск:
jboss-cli.sh --connect --command=:reload
Следите за журналом сервера на предмет ошибок SSL или Elytron во время запуска. После чистого запуска ваш SSL-сертификат установлен на JBoss.
Проверьте установку SSL
После установки убедитесь, что сертификат и цепочка сертификатов обслуживаются корректно. Откройте ваш сайт по HTTPS (например, https://www.yourdomain.com:8443) и проверьте значок замка, либо запустите внешнюю проверку с помощью нашего SSL Checker, чтобы получить полный отчет о сертификате, цепочке и поддержке протоколов. Также можно проверить через командную строку:
echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Эта команда выводит информацию об издателе и датах действия сертификата, который в данный момент обслуживает JBoss. Если издателем указан ваш CA (а не самоподписанная запись), значит, ответ был импортирован правильно.
Часто задаваемые вопросы
Подключитесь к порту HTTPS с помощью OpenSSL и прочитайте сертификат, который возвращает сервер:echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -subject -dates
Если сертификат установлен, эта команда выведет его издателя, субъект и даты действия. Вы также можете проверить хранилище ключей с помощью keytool -list -v -keystore your_keystore.jks, либо открыть ваш сайт в браузере и проверить значок замка.
Сертификат хранится внутри хранилища ключей, а хранилище ключей указывается в key-store Elytron. Обычное расположение — каталог конфигурации сервера, $JBOSS_HOME/standalone/configuration/, при этом путь к key-store Elytron задается как relative-to jboss.server.config.dir. Вы можете хранить его и в другом месте, если путь key-store указывает на него.
keytool не смог построить путь от вашего сертификата до доверенного корневого сертификата. Сначала импортируйте промежуточные (и корневой, если он предоставлен) сертификаты в то же хранилище ключей с параметром -trustcacerts, затем импортируйте подписанный ответ в псевдоним вашего CSR. Если вы импортировали ответ под совершенно новым псевдонимом, приватный ключ будет утрачен: удалите эту запись и повторно импортируйте в исходный псевдоним ключа.
Выполните команду keytool -list -v -keystore your_keystore.jks и прочитайте строку Valid from для вашего псевдонима, либо используйте команду OpenSSL выше, чтобы увидеть даты, которые сообщает работающий сервер. Сроки действия публичных TLS-сертификатов сокращаются в соответствии с правилами CA/Browser Forum: с 15 марта 2026 года максимальный срок составит 200 дней, снизившись до 100 дней в 2027 году и до 47 дней в 2029 году. Отслеживайте даты продления и обновляйте сертификаты до истечения срока действия, либо автоматизируйте выпуск, если ваш CA это поддерживает.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10


