Close

HTTPS. Nginx. LetsEncrypt

3 декабря 2015 года LetsEncrypt вышел в публичный бета-тест и теперь любой желающий может получить на свой домен трастовый TLS (SSL) сертификат бесплатно! Сертификаты, выданные LetsEncrypt, живут 90 дней, но в будущем создатели обещают представить автоматизированный способ их обновления из коробки.

Давайте настроим HTTPS на нашем домене mydomain.com.
Для начала склонируем программу letsencrypt c хитхаба. Для этого у вас должен быть установлен git.

Теперь нужно выполнить следующую команду:

Укажем почту для восстановления ключа:
S1

Согласимся с условиями использования:
S2

И, наконец, введем имя домена или имена, разделяя пробелами или запятыми:
S3

Замечу, что в случае домена с www.* его нужно указывать помимо mydomain.com (mydomain.com www.mydomain.com).

После выполнения всего этого вы получите подобное сообщение:

В директории /etc/letsencrypt/live/mydomain.com/ будут созданы следующие PEM — файлы:
cert.pem — сертификат сервера,
chain.pem — сертификат цепочки доверия,
fullchain.pem — комбинированный сертификат цепочки и сервера,
privkey.pem — приватный ключ сертификата.
Теперь нужно настроить Nginx.
Существует приложение для создания конфигурации SSL от Mozilla. Оно достаточно удобно и понятно, можно воспользоваться им https://mozilla.github.io/server-side-tls/ssl-config-generator/.

Если необходимо узнать версию установленного nginx выполните:

Если же домен был сконфигурирован ранее, то в конфигурацию можно добавить блок с переадресацией с http://

В основном блоке
убедится, что верно указаны server_name, слушается нужный порт и верны пути к сертификатам и ключам:

Также для улучшения безопасности стоит добавить forward secrecy. Он позволяет создавать одноразовые сессионные ключи. Для обмена ключами используется механизм Диффи-Хеллмана. Даже если злоумышленник сможет заполучить ключ сервера, то расшифровать предыдущий трафик уже не удастся. Nginx использует по умолчанию 1024 битные ключи. Мы сгенерируем 2048 битный ключ.
openssl dhparam -out /etc/nginx/ssl/dhparams_2048.pem 2048

И добавим его в конфигурацию после строк с ssl_certificate:

Осталось перезапустить nginx:

Теперь доступ будет осуществляться по https://mydomain.com а трафик будет шифроваться.

Подробное руководство по letsencrypt можно найти здесь
http://letsencrypt.readthedocs.org/en/latest/intro.html

Поделиться: