В этом руководстве показано, как создать 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


