Let’s Encrypt — бесплатный сертификат для HTTPS

Сегодня есть возможность получить абсолютно бесплатно и довольно быстро легальный и корректный сертификат для HTTPS. Для этого нужно воспользоваться услугами https://letsencrypt.org.

Здесь я выкладываю подробную инструкцию по получению сертификата с помощью Let’s Encrypt.

Сначала нужно установить git, если его ещё нет:

# apt-get install git

Затем получаем сам клиент letsencrypt:

git clone https://github.com/letsencrypt/letsencrypt

cd letsencrypt
./letsencrypt-auto —help

Команда letsencrypt-auto  скачает все необходимые зависимости и обновит исходные коды клиента.

Получение и настройка сертификата для Apache:

./letsencrypt-auto —apache

Для nginx тоже есть подобная команда, но на текущий момент (декабрь 2015) на официальном сайте написано, что она в стадии бета и могут быть ошибки.

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

Для получения сертификата с использованием «standalone» (может потребоваться остановить ваш сервер nginx  service nginx stop, или какой там у вас слушает порт 80) сервера для получения.

./letsencrypt-auto certonly —standalone -d example.com -d www.example.com

Вместо example.com  нужно подставить ваш домен.

Вам предложат ввести e-mail, который будет использоваться для важных сообщений и для восстановления потерянного ключа.
Затем вам нужно будет согласиться с лицензионным соглашением.

Ваш сертификат и вся цепочка сохранится по пути /etc/letsencrypt/live/example.com/

В этом каталоге будут ссылки на файлы с ключами:
privkey.pem  — приватный ключ для сертификата. Хранить в секрете. Это то, что Apache требует для SSLCertificateKeyFile, и nginx для ssl_certificate_key.

cert.pem  — только сертификат сервера, то что требует Apache для SSLCertificateFile.

chain.pem  — все сертификаты, которые должны обслуживаться браузером БЕЗ сертификата сервера. Это Apache требует для SSLCertificateChainFile.

fullchain.pem  — вся цепочка, объединение chain.pem и cert.pem. Это nginx требует для ssl_certificate.