Для начала нам нужно установить 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