Содержание страницы

Используйте Java Keytool для создания CSR запроса и установки вашего SSL/TLS сертификата на сервере Tomcat или любой другой сервер на базе Ява.

Как создать CSR запрос используя Java Keytool

Шаг 1: Создайте новое хранилище ключей Keystore используя Keytool

Важно: всегда рекомендуется создавать новое хранилище в связи с тем, что установка ключа в старое хранилице может привести к непредвиденным ошибкам. Перед созданием нового хранилища и удалением старого, желательно сделать его бэкап копию.

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

keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore MyName.jks

В команде выше server — это придуманный идентификатор приватного ключа, который будет использован для создания запроса и установки сертификата, можете задать свое имя. MyName должен быть заменен на наименование вашего домена (к примеру elekt_tech), который вы хотите защитить с помощью SSL/TLS сертификата. Если заказываете Wildcard сертификат, не включайте знак звездочки (*) в наименование, так как он не является допустимым символом в keytool.

Далее вам будет необходимо пошагово заполнить данные для создания хранилища сертификата

1 Создайте пароль

Важно: данный пароль будет использоваться для создания CSR запроса, при импорте сертификата и в конфигурации сервера (например в Tomcat), поэтому запомните его и сохраните в надежном и защищенном месте

2 Введите Информацию SSL/TLS сертификата

Важно: когда появится запрос «What is your first and last name?» НЕ вводите ваше имя и фамилию, вместо этого введите доменное имя вашего сайта Fully Qualified Domain Name (FQDN). К примеру www.yourdomain.com, mail.yourdomain.com или elekt.tech. Если вы будете выпускать Wildcard сертификат, то ваш FQDN должен начинаться со звездочки (*). (e.g.,*.yourdomain.com).

Введите данные вашей организации на латинице при появлении нижеследующих вопросов:

  • What is your first and last name? — введите доменное имя, для которого закупаете сертификат, например, elekt.tech
  • What is the name of your organizational unit? — введите отдел, занимающийся закупом сертификата, например, IT
  • What is the name of your organization? — введите наименование своей организации который будет отображен в сертификате, например, Kind People JSC
  • What is the name of your City or Locality? — введите наименование города или населенного пункта, например, Almaty
  • What is the name of your State or Province? — введите область/штат, например, Almaty
  • What is the two-letter country code for this unit? — введите двузначный код страны, например для Казахстана, KZ

При получении запроса о корректности введенных данных, напечатайте y or yes для подтверждения данных.
При запросе «key password for » нажмите enter для использования того же пароля, что был создан для keystore.

Ваш файл хранилища ключей keystore MyName.jks успешно создан в текущей директории.

Шаг 2: Сгенерируйте Certificate Signing Request (CSR) CSR-запрос из вашего нового хранилища Keystore

В директории, где находится MyName.jks введите команду:

keytool -certreq -alias server -keyalg RSA -file MyName.csr -keystore MyName.jks

В команде выше MyName должен быть заменен на наименование файла CSR запроса, который вы ходите создать.
При запросе пароля введите пароль, который использовался ранее для создания хранилища ключей keystore

Ваш файл CSR-запроса MyName.csr успешно создан в текущей директории.

Важно: сохраните путь к keystore и CSR и сделайте их бэкап, потому что они будут необходимы для дальнейшей успешной установки SSL/TLS сертификата на сервер

Закажите и скачайте ваш SSL/TLS сертификат

Используя команды описанные выше, вы можете создать CSR запрос в Java Keytool и разместить заказ на получение SSL/TLS сертификата для вашего домена у выбранного поставщика (GeoTrust, Symantec, Comodo и т.д.).

Приватный ключи и полная цепочка SSL сертификатов

Данная информация дана для общего обзора и понимания структуры SSL сертификата. Полная цепочка SSL сертификата состоит из Private Key, Primary SSL, Intermediate и Root сертификатов, при этом Intermediate и Root сертификаты обычно можно скачать с сайта поставщика, а Primary сертификат является индивидуально выпущенным для вашего домена, которые обычно хранятся в формате .crt. Приватный ключ Private Key хранится в формате .key

——BEGIN RSA PRIVATE KEY——
(Private Key: your_domain_name.key)
——END RSA PRIVATE KEY——
——BEGIN CERTIFICATE——
(Primary SSL certificate: your_domain_name.crt)
——END CERTIFICATE——
——BEGIN CERTIFICATE——
(Intermediate certificate: DigiCertCA.crt)
——END CERTIFICATE——
——BEGIN CERTIFICATE——
(Root certificate: TrustedRoot.crt)
——END CERTIFICATE——

При наличии приватного ключ и всех трех сертификатов, их можно соединить в текстовом редакторе (например WordPad) и сохранить файл в формате .pem с именем your_domain_name.pem. Это и будет ваш ключ. Однако у нас имеется скаченный ключ в формате .p7s, который обычно содержит в себе Primary, Intermediate и Root сертификат, который можно загрузить в хранилище и на примере которого мы будем создавать SSL сертификат.

Как импортировать SSL/TLS сертификат в хранилище ключей keystore

Важно: создайте резервную копию  MyName.jks, чтобы установить только доменный сертификат или полную цепочку

Инструкция далее может изменятся в зависимости от того, в каком формате у вас имеется загруженный сертификат для сервера и какая цепочка сертификатов должна быть включена в файл.

Установка доменного сертификата

Для примера, мы скачиваем сертификат у поставщика в формате .p7s
Для того чтобы загрузить Primary SSL certificate сертификат сервера в ранее созданный keystore MyName.jks необходимо выполнить команду Keytool

keytool -import -alias server -file MyName.p7s -keystore MyName.jks

где server — это псевдоним приватного ключа и MyName.p7s — наименование файла сертификата, который был скачан и установлен в текущую директорию keystore MyName.jks.

Вы должны получить ответ, что сертификат был установлен в хранилище «Certificate reply was installed in keystore».

При запросе «…is not trusted install anyway» напечатайте y or yes для подтверждения

Ваш сертификат был загружен в хранилище файл CSR-запроса MyName.jks, который вы теперь можете использовать для Ява сервера, к примеру, Tomcat.

Для проверки загруженного в хранилище сертификата можете напечатать в командной строке

keytool -list -keystore MyName.jks -v

Установка полной цепочки сертификатов

Заметка: восстановите резервную копию хранилища MyName.jks, в которой еще не погружены сертификаты

Чтобы прогрузить полную цепочку Primary SSL, Intermediate и Root сертификатов  необходимо выполнить команду

keytool -importcert -alias server -trustcacerts -file MyName.p7b -keystore MyName.jks

где server — это псевдоним приватного ключа и MyName.p7b (или MyName.p7s) — наименование файла сертификата, который был скачан и установлен в текущую директорию keystore MyName.jks

Для проверки загруженного в хранилище сертификата можете напечатать в командной строке

keytool -list -keystore MyName.jks -v

Как установить SSL/TLS сертификат на Томкат (Tomcat)

Путь к сертификату настраивается в файле Томкат server.xml. Откройте файл с помощью текстового редактора иукажите путь и пароль нового ключа.

Заметка: если вы используете Tomcat ниже 7 версии keystorePass необходимо сменить на keypass

В итоге ваши настройки будут выглядеть примерно так:

minSpareThreads="25" maxSpareThreads="75" enableLookups="false"disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true"SSLEnabled="true" clientAuth="false" sslProtocol="TLS" keyAlias="server"keystoreFile="/home/user_name/MyName.jks"keystorePass="ваш_пароль_к_keystore" />

Как конвертировать SSL/TLS сертификат в другой формат

Если возникнет необходимость установить сертификат в другом формате, то можно воспользоваться командами Java Keytool и возможностями специализированной программы OpenSSL.

Как конвертировать SSL сертификат из JKS в P12

Запустите команду, где MyName.jks — имя вашего сертификата, MyName.p12 — имя создаваемого сертификата, MyPASS — придуманный пароль

keytool -importkeystore -srckeystore MyName.jks -destkeystore MyName.p12 -srcstoretype JKS -deststoretype PKCS12 -deststorepass MyPASS

Для проверки сертификата можете напечатать в командной строке

keytool -list -v -keystore MyName.p12 -storetype PKCS12

Как конвертировать SSL сертификат из JKS в PFX

Файл создается аналогичными командами, где только меняется его формат. Запустите команду, где MyName.jks — имя вашего сертификата, MyName.pfx — имя создаваемого сертификата, MyPASS — придуманный пароль

keytool -importkeystore -srckeystore MyName.jks -destkeystore MyName.pfx -srcstoretype JKS -deststoretype PKCS12 -deststorepass MyPASS

Для проверки сертификата можете напечатать в командной строке

keytool -list -v -keystore MyName.pfx -storetype PKCS12

Как конвертировать SSL сертификат из PFX в CER используя OpenSSL

Скачайте утилиту OpenSSL ( ). В командной строке перейдите в директорию, где установлен OpenSSL и запустите команду

openssl pkcs12 -in MyName.pfx -out MyName.cer -nodes

Как конвертировать SSL сертификат из P12 в PEM используя OpenSSL

Запустите через командную строку

openssl pkcs12 -in MyName.p12 -out MyName.pem

Как конвертировать SSL сертификат из PEM в CER используя OpenSSL

Запустите через командную строку

openssl x509 -inform PEM -in MyName.pem -outform DER -out MyName.cer

Как извлечь сертификат из P12 используя OpenSSL

Запустите через командную строку

openssl pkcs12 -in MyName.p12 -out MyName_crt.pem -clcerts -nokeys

Как извлечь приватный ключ из P12 используя OpenSSL

Запустите через командную строку

openssl pkcs12 -in MyName.p12 -out MyName_key.pem -nocerts -nodes

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

три × один =