Let’s Encrypt — это некоммерческая организация, которая предоставляет бесплатный, полностью автоматизированный и открытый CA (certificate authority — центр сертификации) сертификат.
Имея такой бесплатный SSL/TLS сертификат вы сможете легко настроить шифрованный HTTPS протокол на своем сайте, тем самым защитит передачу данных между клиентом и сервером, а также повысить ранжирование в поисковых системах (google) и многое другое. Не говоря о красивом зеленом замке в начале вашего любимого домена.
Пошаговая инструкция по созданию бесплатного сертификата для HTTPS протокола от Let’s Encrypt

Устанавливаем клиент Let’s Encrypt на сервер
Подключаемся к серверу по SSH. И переходим, например, в домашнюю директорию:
В нее мы установим клиент Let’s Encrypt. Для этого нам понадобится git, если у вас на сервере уже установлен git, то просто выполните следующие команды:
|
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt |
Если у вас не установлен git, то либо установите его следующей командой:
Либо просто распакуйте zip архив из репозитория GitHub:
|
wget https://github.com/letsencrypt/letsencrypt/archive/master.zip unzip master.zip mv letsencrypt-master letsencrypt cd letsencrypt |
Проверяем:
|
./letsencrypt-auto --help |
В ответ вы увидите следующие:

Все, клиент Let’s Encrypt установлен.
Создаем SSL сертификат для HTTPS протокола на сайт
Перейдем к созданию сертификата Let’s Encrypt. Для этого сначала необходимо остановить nginx:
и запустить команду создания SSL сертификата:
|
./letsencrypt-auto certonly --standalone -d devreadwrite.com -d www.devreadwrite.com |
В случае успешного создания сертификата для HTTPS протокола вы увидите примерно следующие

Не забудте поменять доменое имя devreadwrite.com на свое.
В процессе создания сертификата, вам предложат ввести e-mail, для важных сообщений и для восстановления ключа при необходимости. Далее нужно будет согласиться с лицензионным соглашением. Созданный SSL сертификат сертификат и вся цепочка сохранится по следующему пути:
/etc/letsencrypt/live/devreadwrite.com/
Файлы SSL сертификата
В /etc/letsencrypt/live/devreadwrite.com/ будут следующие файлы:
privkey.pem — приватный ключ для сертификата. В Apache он используется в директиве SSLCertificateKeyFile. В Nginx используется в директиве ssl_certificate_key.
cert.pem — сертификат сервера. Его требует директива Apache SSLCertificateFile.
chain.pem — связка всех сертификатов, которые обслуживаются браузером, за исключением cert.pem. Используется Apache SSLCertificateChainFile.
fullchain.pem — вся связка сертификатов (объединение chain.pem и cert.pem). Используется в Nginx для ssl_certificate.
Вот мы и получили сертификат. Не забудьте запустить Nginx:
Теперь мы можем подключить протокол HTTPS к сайту.
Настройка HTTPS (SSL/TLS) в Nginx
Откройте файл конфигурации Nginx для сайта (обычно это: /etc/nginx/vhosts/userName/) и добавьте следующие строки:
|
server { #... ssl on; ssl_certificate /etc/letsencrypt/live/devreadwrite.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/devreadwrite.com/privkey.pem; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; listen server_ip:443 ssl; listen server_ip:80; } |
Далее необходимо перезапустить Nginx:
или
Nginx, 301 редирект с протокола http на https
|
server { #... # force https-redirects if ($scheme = http) { return 301 https://$server_name$request_uri; } } |
Настройка HTTPS (SSL/TLS) в Apache
Откройте файл конфигурации Apache для сайта (обычно это: /etc/apache2/vhosts/userName/) и добавьте следующие строки:
|
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/devreadwrite.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/devreadwrite.com/privkey.pem |
В итоге получится что-то вроде:
|
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin #... webmaster@localhost DocumentRoot #... /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/devreadwrite.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/devreadwrite.com/privkey.pem #... </VirtualHost> </IfModule> |
Перезапускаем Apache:
301 редирект с протокола http на https в Apache
Добавьте следующий код в файл .htaccess вашего сайта:
|
RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] |
Еще ридиректы в Apache: 301 редирект на все случаи жизни с помощью .htaccess.
Дополнительно
Для того чтобы получить зеленый замочек в адресной строке, который будет указывать пользователю что сайт правильно работает по протоколу HTTPS, необходимо все пути к подключаемым файлам (картинкам, css, js, …) поменять с http на https. Так же можно вместо http или https поставить два слеша (//). Например:
|
<link rel="stylesheet" type="text/css" href="http://devreadwrite.com/style.css" /> |
заменить на:
|
<link rel="stylesheet" type="text/css" href="//devreadwrite.com/style.css" /> |
В таком случае файл будет получен по тому же протаколу в каком был запрошен сайт, в нашем случае https. Или же указать протокол явно.
|
<link rel="stylesheet" type="text/css" href="https://devreadwrite.com/style.css" /> |
По такому же принципу можно делать и ссылке на сайте.
Как продлить сертификат
Сертификат выдается на 3 месяца, поэтому за несколько дней до окончания его необходимо продлить.
Для продления сертификата необходимо выполнить команду:
Эту команду вы можете добавить в крон таб, для автоматического продления SSL сертификата.
Плюсы и минусы данного способа создания сертификата
Один и самый большой плюс данного способа — это создание сертификата без танцев с бубном. Существует множество других способов, но этот единственный, который заработал сразу.
Минус данного способа создания SSL сертификата заключается в том, что для создания сертификата необходимо остановит Nginx, следовательно сайты на Nginx во время создания сертификата не будут работать, это примерно 5-10 секунд (по крайней мере на моем сервере).
Результат
В результате мы получаем рабочий SSL сертификат и протокол HTTPS на сайте.

Источник: https://кодер.укр/%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8/let-s-encrypt-%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D1%8B%D0%B9-ssl-%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82-%D0%B8-https-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB-%D0%BD%D0%B0-%D1%81%D0%B0%D0%B9%D1%82