Для начала нам нужно установить certbot:
sudo apt install python-certbot-nginx
Теперь Certbot готов к использованию, но для того, чтобы он мог настроить SSL для Nginx, нам сперва необходимо проверить кое-какие настройки Nginx.
Шаг 2 — Проверка настроек Nginx
Certbot должен иметь возможность найти корректный серверный блок в вашей конфигурации Nginx для того, чтобы автоматически конфигурировать SSL. Для этого он будет искать директиву server_name
, которая совпадает с доменным именем, для которого вы запросите сертификат.
Если вы следовали инструкциям по настройке серверного блока в руководстве по установке Nginx, у вас должен быть серверный блок для вашего домена по адресу /etc/nginx/sites-available/example.com
с уже правильно настроенной директивой server_name
.
Для проверки откройте файл серверного блока в nano
или любом другом текстовом редакторе:
sudo nano /etc/nginx/sites-available/example.com
Найдите строку с server_name
. Она должна выглядеть примерно так:
...
server_name example.com www.example.com;
...
Если она выглядит таким образом, закройте файл и переходите к следующему шагу.
Если она не выглядит так, как описано выше, обновите директиву server_name
. Затем сохраните и закройте файл, после чего проверьте корректность синтаксиса вашего конфигурационного файла командой:
sudo nginx -t
Если вы получили ошибку, откройте файл серверного блока и проверьте его на наличие опечаток или пропущенных символов. После того, как ваш конфигурационный файл будет проходить проверку на корректность, перезагрузите Nginx для применения новой конфигурации:
sudo service nginx reload
Теперь Certbot может находить и обновлять корректный серверный блок.
Далее обновим настройки файрвола для пропуска HTTPS трафика.
Настраиваем certbot:
sudo certbot certonly
После чего вы увидите следующее сообщение:
Saving debug log to /var/log/letsencrypt/letsencrypt.log How would you like to authenticate with the ACME CA? 1: Nginx Web Server plugin - Alpha (nginx) 2: Spin up a temporary webserver (standalone) 3: Place files in webroot directory (webroot) Select the appropriate number [1-3] then [enter] (press 'c' to cancel):
Выбираем 3 (Place files in webroot directory (webroot)) вариант.
После чего нас попросят ввести наш e-mail. Она будет отображаться во всех установленных сертификатах:
your@eeee.mail
После этого вас просят прочитать соглашение и либо принять его или отклонить.
Согласшамся и нажимаем A -agree
После чего вас просят подписаться или не подписаться на рассылку от Let’s Encrypt:
Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights.
(Y)es/(N)o:
Согласшамся и нажимаем Y -yes или отказываемся и нажимаем N -no
После чего нас просят ввести домен/ы, разделенные запятыми, пробелами или /. Отказываемся, вписав C.
Получение сертификата для домена sitename.ru
certbot certonly -d sitename.ru -d www.sitename.ru
Последние версии certbot автоматически создают задание для
автообновления сертификатов по крону: /etc/cron.d/certbot
либо с использованием системного таймера systemctl list-timers
и создавать его самому не нужно!
и создавать его самому не нужно!
Оригинал используемой статьи: https://www.digitalocean.com/community/tutorials/nginx-let-s-encrypt-ubuntu-18-04-ru
Проверить правильность настройки https можно на сайте: https://www.ssllabs.com/ssltest/index.html