вторник, 3 февраля 2015 г.

Бесплатный https сертификат + интеграция в Apache–TomCat


Бесплатный https сертификат + интеграция в Apache–TomCatиз песочницы

Доброго времени суток, дорогие друзья. У меня возникла необходимость настроить https на сервере, который используется в онлайн-игре. Для этого мне понадобится бесплатная регистрация на StartSSL и немного времени. Инструкции на самом сайте StartSSL довольно туманные. Эта публикация призвана пролить свет на детали.

Первым делом проходим простую регистрацию на StartSSL, её результатом будет созданный приватный сертификат. Во время регистрации указываем свои домашние данные. Все данные желательно заполнять латиницей. Сертификат следует обязательно сохранить в безопасном месте. Для этого в вашем любимом браузере идем в настройки, где хранятся сертификаты и экспортируем в файл ваш сертификат.

Второй шаг подразумевает под собой валидацию домена, где будет использован сертификат https. Для этого в панели управления на сайте StartSSL переходим в раздел Validations Wizard и выбираем пункт Domain Name Validation. Выбираем на какой почтовый адрес отправить проверочный код, отправляем, проверяем почту, подтверждаем код — домен подтвержден.

Третий большой шаг. Генерация сертификата. Для этого нам понадобится создать файл-запрос для получения серфтификата и хранилище, которое будет использовано для авторизации https. Инициализируем приватный ключ и создадим хранилище, где PASSWORD — одинаковый пароль, который мы будем использовать во всех командах ниже и DOMAIN_NAME — просто имя вашего домена, без .ru, .org и т.д. Выполняем в терминале:

keytool -genkey -keysize 2048 -keyalg RSA -sigalg SHA1withRSA -alias webserver -keystore ks2 -keypass PASSWORD -storepass PASSWORD -dname "CN=DOMAIN_NAME.org, OU=Unknown, O=DOMAIN_NAME, L=Slovakia, ST=Unknown, C=SK"

Теперь мы можем создать файл-запрос, он же Certificate Request (CSR), результат появится в файле DOMAIN_NAME.csr:

keytool -certreq -alias webserver -file DOMAIN_NAME.csr -keystore ks2

Идем в раздел Certificates Wizard и там выбираем Web Server SSL/TSL Certificate. Нажимаем Skip. Открываем наш файл DOMAIN_NAME.csr и копируем его содержимое в буфер обмена. Возвращаемся на сайт StartSSL и в появившееся поле вставляем из буфера наш Certificate Request (CSR), который будет в формате Base64. Отправляем. StartSSL предлагает к основному домену добавить еще и поддомен. Можно указать стандартное www или то, что Вам хочется. В течении 15-180 минут будет создан сертификат

Четвертый шаг. Вы дождались письма от StartSSL о том что Ваш серфтикат готов. Идем к ним на сайт и получаем его в Tool Box — Retrieve Certificate, выбираем Ваш домен и появившийся текст в кодировке Base64 копируем в буфер обмена. Создаем на диске файл ssl.crt и вставляем в него наш сертификат. Теперь у нас есть все для финального шага. Качаем корневой сертификат StartSSL:

www.startssl.com/certs/ca.crt
www.startssl.com/certs/sub.class1.server.ca.crt

Импортируем эти сертификаты в наше хранилище:

keytool -import -alias startsslca -file ca.cer  -keystore ks2 -trustcacerts
keytool -import -alias startsslca1 -file sub.class1.server.ca.crt  -keystore ks2 -trustcacerts

Импортируем наш сертификат из файла ssl.crt:

keytool -import -alias webserver -file ssl.crt  -keystore ks2

Пятый шаг. Последний. Пропишем в файле server.xml коннектор:

<Connector port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile=“path\to\keystore\ks2" keystorePass="PASSWORD" clientAuth="false" sslProtocol="TLS"/>

И установим редирект:

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

Готово.

P.S. Прошу прощения за допущенные мною орфографические ошибки, а так же за возможно сумбурный гайд. Автор самоучка и, возможно, некоторые вещи называет не своими именами. Всем спасибо за внимание. Надеюсь, публикация будет кому-то полезной.

P.S.S. Подразумевается, что все файлы сохраняются и создаются в одной папке, в этой же папке выполняются и команды в терминале.
+3
6978
156
Ezbar 2,5

Комментарии (6)

0
KREGI#
1. Порты <1024 нужно биндить, для этого в файле /etc/default/tomcat7 раскоментировать параметр AUTHBIND и установить значение AUTHBIND=yes
2. Редирект можно сделать силами IPTABLES:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
3. не забываем переезапустить TomCat после внесения изменений.
0
vladsharikov#
Странно выглядит второй пункт про подтверждение доменного имени. Мы получили сертификат и можем валидировать любое доменное имя по вашим словам. На любую указанную почту придёт подтверждение, как вы говорите. Что мешает мне подтвердить гугл ком?
0
grossws#
Там небольшой набор вариантов типа hostmaster@example.com, postmaster@example.com для валидируемого домена example.com
0
vladsharikov#
Так ясно, спасибо
0
kyookineko#
а почему SHA1withRSA? может всё же лучше SHA256withRSA
0
grossws#
Они подписывают пока так. Пока sha1 считается допустимым, многие CA спокойно подписывают его. StartSSL из вашего CSR возьмет только commonName и данные ключа (e, n).

0 коммент.:

Отправить комментарий