bg-tutorials

Как сгенерировать CSR на серверах JBoss

Этот учебник показывает вам, как сгенерировать CSR (запрос на подпись сертификата) на JBoss EAP и WildFly с помощью утилиты Java keytool. Процесс состоит из двух команд: сначала keytool -genkeypair создает хранилище ключей и закрытый ключ под выбранным псевдонимом (alias), затем keytool -certreq экспортирует соответствующий CSR с альтернативными именами субъекта, которые выдаст CA. Тот же псевдоним позже используется повторно при импорте подписанного сертификата, поэтому ключ, CSR и итоговый сертификат хранятся в одном месте.

Примечание о версиях: современный JBoss — это Red Hat JBoss Enterprise Application Platform (EAP) 8, выпущенный в феврале 2024 года и основанный на проекте WildFly (WildFly 41, выпущенный в июле 2026 года, является текущим релизом сообщества). Обе версии настраивают HTTPS через подсистему elytron и https-listener Undertow; более старая конфигурация коннектора Tomcat или Jetty, показанная в устаревших руководствах, больше не применяется. Однако сам шаг создания CSR идентичен во всех последних версиях, поскольку это обычная операция Java keytool.

Что вам понадобится

  • Установленная Java (JDK или JRE), чтобы команда keytool была доступна. JBoss EAP 8.0 работает на Java 11 (устаревшая) или 17, EAP 8.1 добавляет Java 21, а WildFly 41 работает на Java 17, 21 или 25 (Java 11 больше не поддерживается разработчиками). Проверьте с помощью keytool -help.
  • Доступ к оболочке или терминалу на сервере JBoss, где будет храниться закрытый ключ. Закрытый ключ должен оставаться на этом сервере.
  • Точное полное доменное имя (FQDN), которое вы хотите защитить, например www.yourdomain.com, а также любые дополнительные имена хостов, которые нужно включить в поле SAN.
  • Юридические данные вашей организации (страна, штат, населенный пункт, название организации) для поля Distinguished Name в CSR.

Шаг 1: Создание хранилища ключей и закрытого ключа

Если вы уже сгенерировали свой CSR, переходите сразу к разделу отправка CSR, а затем к установке SSL-сертификата на JBoss.

Откройте терминал на сервере JBoss и создайте новое хранилище ключей в формате PKCS12. PKCS12 — это современный, портативный стандарт (RFC 7292), и он является форматом хранилища ключей по умолчанию в Java начиная с JDK 9; более старый проприетарный формат JKS считается устаревшим. Выполните:

keytool -genkeypair 
  -alias jboss 
  -keyalg RSA -keysize 2048 
  -storetype PKCS12 
  -keystore yourdomain.p12 
  -validity 825

Что означают флаги:

  • -alias jboss: имя записи внутри хранилища ключей. Выберите метку, которую вы легко узнаете (часто jboss, server или ваш домен). Запишите его. Вы должны использовать этот же псевдоним при генерации CSR, а затем снова при импорте подписанного сертификата. Использование другого псевдонима при импорте — самая распространенная ошибка при работе с keytool.
  • -keyalg RSA -keysize 2048: 2048-битный ключ RSA — это текущий общепринятый минимум. Для новых хранилищ ключей, которые вы планируете использовать несколько лет, разумным вариантом обновления будет 3072 бита. Большинство публичных CA также принимают ECDSA (-keyalg EC -groupname secp256r1), если вы предпочитаете меньший и более быстрый ключ. Опция -groupname требует JDK 13 или более позднюю версию; на Java 11 вместо этого используйте -keyalg EC -keysize 256, что выбирает ту же кривую secp256r1. keytool отклоняет обе опции в одной команде.
  • -storetype PKCS12: принудительно задает современное хранилище ключей PKCS12. Соответствующее расширение — .p12 (или .pfx).
  • -keystore yourdomain.p12: файл хранилища ключей, который будет создан. Замените имя на то, которое вы будете легко узнавать, и храните этот файл в безопасности; он содержит ваш закрытый ключ.
  • -validity 825: как долго действителен самоподписанный заполняющий сертификат внутри хранилища ключей. Позже его заменит подписанный сертификат от CA, поэтому точное значение не влияет на срок службы в рабочей среде.

Затем keytool запрашивает пароль хранилища ключей. Выберите надежный пароль и сохраните его в вашем менеджере паролей: он понадобится вам для каждой последующей команды keytool и для credential-reference Elytron, который вы настроите в JBoss. В хранилищах ключей PKCS12 пароль ключа совпадает с паролем хранилища, поэтому запоминать нужно только один пароль.

Шаг 2: Ввод данных вашей организации (DN)

Теперь keytool запрашивает Distinguished Name (DN): поля идентификации, которые войдут в CSR. Отвечайте на каждый запрос точным юридическим значением для вашей организации. Пунктуация и точность важны, поскольку CA отклонит несоответствия с публичными деловыми записями.

  • Имя и фамилия (CN): это формулировка keytool, но на самом деле это поле Common Name. Введите точное FQDN, которое вы защищаете, например www.yourdomain.com, или подстановочный знак вида *.yourdomain.com. Не вводите имя человека.
  • Organizational unit (OU): это поле больше не выдается публичными CA, и лучше оставить его пустым. Обратите внимание, что нажатие Enter не оставляет поле пустым: keytool подставляет собственное значение по умолчанию, поэтому в DN в итоге появляется OU=Unknown, которое затем переносится в CSR. Чтобы действительно исключить это поле, используйте неинтерактивную форму -dname ниже и не указывайте OU в строке.
  • Организация (O): полное юридическое название вашей компании, например Your Company LLC. Это требуется для сертификатов OV и EV; для DV-сертификатов многие CA принимают это как информационное поле, поэтому заполнить его безопаснее, чем оставить пустым.
  • Город или населенный пункт (L): полное название города, например San Jose. Не используйте сокращения.
  • Штат или область (ST): полное название штата или области, например California. Не используйте двухбуквенный код.
  • Код страны (C): двухбуквенный код страны по стандарту ISO, например US, GB, DE.

После последнего запроса keytool показывает сводку вида CN=www.yourdomain.com, OU=Unknown, O=Your Company LLC, L=San Jose, ST=California, C=US. Введите yes для подтверждения. Теперь файл хранилища ключей существует с одной записью: ваш псевдоним, содержащий закрытый ключ и самоподписанный заполняющий сертификат.

Если вы предпочитаете неинтерактивную команду, передайте DN прямо в команде и пропустите запросы:

keytool -genkeypair 
  -alias jboss 
  -keyalg RSA -keysize 2048 
  -storetype PKCS12 
  -keystore yourdomain.p12 
  -dname "CN=www.yourdomain.com, O=Your Company LLC, L=San Jose, ST=California, C=US" 
  -validity 825

Шаг 3: Генерация CSR с SAN

Современные браузеры и TLS-клиенты проверяют сертификаты по расширению Subject Alternative Name (SAN), а не только по Common Name. Запросите SAN непосредственно в CSR, чтобы CA включил их в выданный сертификат. Используйте тот же псевдоним и хранилище ключей из шага 1:

keytool -certreq 
  -alias jboss 
  -keystore yourdomain.p12 
  -file yourdomain.csr 
  -ext san=dns:yourdomain.com,dns:www.yourdomain.com

Что означают флаги:

  • -alias jboss: должен совпадать с псевдонимом из шага 1. Это псевдоним, чей закрытый ключ подписывает запрос.
  • -keystore yourdomain.p12: должен совпадать с хранилищем ключей из шага 1.
  • -file yourdomain.csr: имя выходного файла для CSR.
  • -ext san=dns:…: расширение Subject Alternative Name. Перечислите все имена хостов, которые должен покрывать сертификат, включая корневой домен (yourdomain.com) и поддомен www. Добавляйте дополнительные записи через запятую, например dns:api.yourdomain.com.

keytool запрашивает пароль хранилища ключей и записывает CSR в файл yourdomain.csr в текущем каталоге.

Важно: сохраняйте псевдоним и хранилище ключей

Самая распространенная ошибка при работе с keytool на JBoss — импорт подписанного сертификата под новым псевдонимом. При этом сертификат сохраняется как отдельная доверенная запись без привязанного закрытого ключа, и менеджер ключей Elytron не сможет запустить сессию TLS. Всегда импортируйте подписанный ответ обратно в тот же псевдоним, который содержит закрытый ключ (псевдоним из шага 1).

Запишите эти три значения сейчас, прежде чем закрыть терминал:

  • Псевдоним (в этом руководстве — jboss).
  • Путь к файлу хранилища ключей (например, yourdomain.p12; на JBoss он обычно находится в $JBOSS_HOME/standalone/configuration/).
  • Пароль хранилища ключей.

Если вы не уверены, какой псевдоним содержит ваш ключ, выведите список содержимого хранилища ключей и найдите запись типа PrivateKeyEntry:

keytool -list -v -keystore yourdomain.p12

Шаг 4: Проверка CSR перед отправкой

Выявите опечатки в DN или отсутствующие SAN до того, как CA проверит их. Выведите CSR с помощью keytool:

keytool -printcertreq -file yourdomain.csr

Или, если установлен OpenSSL, вы можете использовать его вместо этого:

openssl req -noout -text -in yourdomain.csr

Проверьте три момента в выводе: поле Subject показывает ваш точный DN, поле Subject Alternative Name перечисляет все необходимые имена хостов, а размер Public-Key соответствует тому, что вы запросили (2048-битный RSA или что вы выбрали). Вы также можете вставить CSR в наш Декодер CSR для той же проверки прямо в браузере.

Шаг 5: Отправка CSR в удостоверяющий центр

Откройте yourdomain.csr в любом текстовом редакторе. Файл представляет собой обычный текст, начинающийся со строки -----BEGIN NEW CERTIFICATE REQUEST----- и заканчивающийся строкой -----END NEW CERTIFICATE REQUEST-----. Слово NEW — это то, что записывает keytool, и это ожидаемо: содержимое представляет собой стандартный запрос PKCS#10, который принимают все CA. Скопируйте весь блок, включая эти начальную и конечную строки, и вставьте его в поле CSR при оформлении заказа у вашего CA. В Windows используйте Ctrl + A, а затем Ctrl + C, чтобы захватить весь текст; в macOS используйте Cmd + A, а затем Cmd + C.

Сделайте резервную копию файла хранилища ключей, прежде чем предпринимать что-либо еще. Если вы потеряете yourdomain.p12, вы также потеряете закрытый ключ, а это означает, что подписанный сертификат, который вернет CA, окажется непригодным для использования, и вам придется начинать заново с нового CSR.

После того как CA проверит ваш запрос и выдаст сертификат, переходите к разделу как установить SSL-сертификат на JBoss. Вы импортируете подписанный сертификат обратно в тот же псевдоним в том же хранилище ключей, а затем сошлетесь на это хранилище из key-store, key-manager и server-ssl-context Elytron, подключенных к https-listener Undertow.

Можно ли повторно использовать CSR при продлении?

Можно, но передовая практика безопасности заключается в создании нового хранилища ключей, нового закрытого ключа и нового CSR для каждого сертификата. Новый ключ при каждом продлении ограничивает последствия в случае компрометации старого ключа, а процесс остается тем же: выполните keytool -genkeypair и keytool -certreq для нового файла хранилища ключей. Сроки действия публичных TLS-сертификатов сокращаются согласно правилам CA/Browser Forum (200 дней по состоянию на 15 марта 2026 года, снижение до 100 дней в 2027 году и до 47 дней в 2029 году), поэтому планируйте более частые циклы обновления CSR или автоматизируйте выдачу через ACME, если ваш CA это поддерживает.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

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

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.