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