bg-tutorials

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

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

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

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

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

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

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

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

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

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

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

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

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

  • First and last name (CN): это формулировка keytool, но по сути это поле Common Name. Введите точное FQDN, которое вы защищаете, например www.yourdomain.com, или wildcard-домен, например *.yourdomain.com. Не вводите имя человека.
  • Organizational unit (OU): это поле больше не выдается публичными CA, и его лучше оставить пустым. Нажмите Enter, чтобы пропустить.
  • Organization (O): полное юридическое название вашей компании, например Your Company LLC.
  • City or locality (L): полное название города, например San Jose. Не сокращайте.
  • State or province (ST): полное название штата или региона, например California. Не используйте двухбуквенный код.
  • Country code (C): двухбуквенный код страны по ISO, например US, GB, DE.

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

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

keytool -genkeypair 
  -alias tomcat 
  -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

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

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

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

  • -alias tomcat: должен совпадать с псевдонимом из Шага 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 на Tomcat — импорт подписанного сертификата под новым псевдонимом. В этом случае сертификат сохраняется как отдельная доверенная запись без прикрепленного приватного ключа, и TLS не будет работать. Всегда импортируйте подписанный ответ обратно в тот же псевдоним, который содержит приватный ключ (псевдоним из Шага 1).

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

  • Псевдоним (в этом руководстве — tomcat).
  • Путь к файлу хранилища ключей (например, yourdomain.p12).
  • Пароль хранилища ключей.

Если вы не уверены, какой псевдоним содержит ваш ключ, выведите содержимое хранилища ключей и найдите запись, тип которой — 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 Decoder для той же проверки в браузере.

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

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

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

Сэкономьте 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.