Подготовка сертификатов для включения SSL на веб-сервере
Несколько вариантов создания и подключения сертификатов для tomcat.
В данном статье в качестве веб-сервера используется tomcat и утилита keytool.
Keytool позволяет создавать и управлять java keystore, специальным хранилищем ключей и сертификатов. Сертификаты для tomcat обычно храняться в нем. У Java Keystore есть алиас - имя по которому можно запросить информацию о сертификатах и пароли.
Первый способ - Самоподписанный сертификат.
Несколько вариантов создания и подключения сертификатов для tomcat.
В данном статье в качестве веб-сервера используется tomcat и утилита keytool.
Keytool позволяет создавать и управлять java keystore, специальным хранилищем ключей и сертификатов. Сертификаты для tomcat обычно храняться в нем. У Java Keystore есть алиас - имя по которому можно запросить информацию о сертификатах и пароли.
Первый способ - Самоподписанный сертификат.
Сертификат подписан самим собой, в основном используется для тестов. В реальной жизни мало применим, потому что при входе на сайт, пользователь видит предупреждение о том, что сертификат является не доверенным.
Чтобы создать такой сертификат нужно запустить команду:
Второй способ - Thawte сертификат
Данный способ предполагает, что уже приобретен thawte wildcard сертификат и нужно его подготовить и подключить к tomcat.
В документации на сайте thawte описывается способ импорта сертификата в keystore вебсервера tomcat. Но в нашем случае данный keystore не заработает, так как не был импортирован приватный ключ и tomcat выдаст ошибку:
Скачать утилиту ImportKey.java и положить в /usr/local/ssl/comu/
Запустить компиляцию проекта:
Положить thawte сертификат и приватный ключ в каталог /usr/local/ssl
Все сертификаты должны быть сохранены в DER-format, а так же приватный ключ зашифрован в pksc8, а сертификат в x509.
Конвертация приватного ключа:
Содержание полученного keystore можно посмотреть следующей командой:
Создание пароля для keystore:
Третий способ - Сертификат созданный в Microsoft Active Directory Certificate Service
Данный способ предполагает запрос необходимых сертификатов через доменный центр сертификации, выгрузку их в формате pfx и подключение к веб серверу.
Третий способ решил вынести в отдельный пост, так как слишком объемная статья получилась.
Чтобы создать такой сертификат нужно запустить команду:
keytool -genkey -alias mykeystore -keyalg RSA
Затем будет задан вопрос "What is your first and last name", естественно нужно ввести полное DNS имя сервера. Создастся keystore с сертификатом. Осталось настроить tomcat на него.Второй способ - Thawte сертификат
Данный способ предполагает, что уже приобретен thawte wildcard сертификат и нужно его подготовить и подключить к tomcat.
В документации на сайте thawte описывается способ импорта сертификата в keystore вебсервера tomcat. Но в нашем случае данный keystore не заработает, так как не был импортирован приватный ключ и tomcat выдаст ошибку:
java.io.IOException: Alias name tomcat does not identify a key entryРебята из comu.de написали утилиту позволяющую импортировать сертификат и приватный ключ в keystore. Ссылка на источник (http://www.comu.de/docs/tomcat_ssl.htm)
Скачать утилиту ImportKey.java и положить в /usr/local/ssl/comu/
Запустить компиляцию проекта:
javac ImportKey.java
В каталоге /usr/local/ssl/comu появиться файл ImportKey.classПоложить thawte сертификат и приватный ключ в каталог /usr/local/ssl
Все сертификаты должны быть сохранены в DER-format, а так же приватный ключ зашифрован в pksc8, а сертификат в x509.
Конвертация приватного ключа:
openssl pkcs8 -topk8 -nocrypt -in YOUR.KEY -out YOUR.KEY.der -outform der
Запустить java утилиту Importkey.java на создание keystore: java comu.ImportKey YOUR.KEY.der YOUR.CERT.der
Будет создан файл $home/keystore.ImportKey, где $home это домашняя директория пользователя, в моем случае это /root/keystore.ImportKey. Файл нужно переместить в /usr/local/sslСодержание полученного keystore можно посмотреть следующей командой:
keytool -list -keystore keystore.ImportKey
Но этого недостаточно, так как утилита оставила пустые пароли, нам необходимо их создать, один на keystore(storepass), второй на ключ (keypass).Создание пароля для keystore:
keytool -storepasswd -alias importkey -keystore /usr/local/ssl/keystore.ImportKey -storepass ""
Создание пароля ключа (попросит ввести предыдущий пароль для keystore): keytool -keypasswd -alias importkey -keystore /usr/local/ssl/keystore.ImportKey -keypass ""
Если нужно изменить название keystore, то это делается так: keytool -keyclone -keystore keystore.ImportKey -alias importkey -keypass <пароль ключа> -dest <новый keystore>
Осталось добавить пути к сертификатам в конфигурацию tomcatТретий способ - Сертификат созданный в Microsoft Active Directory Certificate Service
Данный способ предполагает запрос необходимых сертификатов через доменный центр сертификации, выгрузку их в формате pfx и подключение к веб серверу.
Третий способ решил вынести в отдельный пост, так как слишком объемная статья получилась.