SSL/TLS-шифрование вашего веб-сайта приводит к более высокому поисковому рейтингу и лучшей безопасности при взаимодействии для ваших пользователей.
Let’s Encrypt делает шифрование SSL/TLS бесплатным для всех. Сертификатам, выпущенным Let’s Encrypt, сегодня доверяют большинство браузеров, включая старые браузеры, такие как Internet Explorer в Windows XP SP3. Кроме того, Let’s Encrypt полностью автоматизирует как выдачу, так и продление сертификатов.
Сначала загрузите и установите в ОС клиент Let’s Encrypt, <strong>certbot</strong>
.
$ apt-get update
$ sudo apt-get install certbot
$ apt-get install python-certbot-nginx
В Ubuntu 18.04 и более поздних версиях замените версию Python 3:
$ apt-get update
$ sudo apt-get install certbot
$ apt-get install python3-certbot-nginx
<strong>certbot</strong>
может автоматически настроить NGINX для SSL/TLS. Он ищет и изменяет <strong>server</strong>
блок в вашей конфигурации NGINX, который содержит <strong>server_name</strong>
директиву с доменным именем, для которого вы запрашиваете сертификат. В нашем примере это домен www.example.com .
Настройте NGINX
В конфигурационном файле NGINX укажите свое доменное имя (и варианты, если они есть) с помощью <strong>server_name</strong>
директивы:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
}
Сохраните файл, затем запустите эту команду, чтобы проверить синтаксис вашей конфигурации и перезапустить NGINX:
nginx -t && nginx -s reload
Получите сертификат SSL/TLS
Выполните следующую команду, чтобы сгенерировать сертификаты с подключаемым модулем NGINX:
sudo certbot --nginx -d example.com -d www.example.com
<strong>certbot</strong>
позаботится о перенастройке NGINX и перезагрузке его конфигурации при необходимости.
Далее ответьте на запросы от <strong>certbot</strong>
, чтобы настроить HTTPS, для этого нужно указать ваш адрес электронной почты и принять условия обслуживания Let’s Encrypt.
Когда генерация сертификата завершится, NGINX перезагрузится с новыми настройками. А <strong>certbot</strong>
выдаст в консоль сообщение об успешном создании сертификата и местоположении его (сертификата) на вашем сервере.
Congratulations! You have successfully enabled https://example.com and https://www.example.com
-------------------------------------------------------------------------------------
IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com//privkey.pem
Your cert will expire on 2017-12-12.
Примечание . Срок действия сертификатов Let’s Encrypt истекает через 90 дней (в примере — 12 декабря 2017 года).
Если вы загляните в свой файл конфигурации ____.conf , то увидите, что <strong>certbot</strong>
внес некоторые изменения:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
listen 443 ssl; # managed by Certbot
# RSA certificate
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# Redirect non-https traffic to https
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
}
Теперь ваш сайт должен открываться в защищенном соединении по схеме протокола HTTPS
Автоматическое обновление сертификатов Let’s Encrypt
Срок действия сертификатов Let’s Encrypt истекает через 90 дней. Я рекомендую вам автоматически обновлять сертификаты. Для этого добавим <strong>cron</strong>
-задание в существующий файл crontab. Откройте файл:
crontab -e
Затем выберите как открыть, я выбрал редактор nano
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.tiny
3. /usr/bin/code
4. /bin/ed
Добавьте для <strong>certbot</strong>
команду ежедневного выполнения. В этом примере мы запускаем скрипт каждый день в полдень. Команда проверяет, не истечет ли срок действия сертификата на сервере в ближайшие 30 дней, и обновляет его, если это так. Директива <strong>--quiet</strong>
предписывает <strong>certbot</strong>
не генерировать вывод .
0 12 * * * /usr/bin/certbot renew --quiet
Сохраните и закройте файл. Теперь все истекающие сертификаты будут автоматически продлены заблаговременно.