Как настроить Nginx с помощью Let’s Encrypt на Ubuntu 20.04

Чтобы включить безопасную связь HTTPS на вашем веб-сервере NGINX. Вам необходимо получить сертификат SSL/TLS от доверенного центра сертификации. Let’s Encrypt — это некоммерческий центр сертификации, который предлагает бесплатные сертификаты SSL / TLS.

В этом руководстве описывается, как настроить бесплатный сертификат SSL/TLS, выданный компанией Let’s Encrypt на сервере Ubuntu 20.04 LTS под управлением сервера Nginx.

Установите Certbot на Ubuntu

Certbot — это инструмент с открытым исходным кодом, который упрощает и автоматизирует процесс получения и обновления сертификатов от Let’s Encrypt. Мы собираемся установить Certbot с помощью системы развертывания Snap. Snap предварительно установлен на Ubuntu 20.04.

Обновление snapd

Выполните следующие команды для обновления snapd.

$ sudo snap install core
$ sudo snap refresh core

Установите certbot snap

Далее требуется установить оснастку Certbot snap.

Примечание: Если вы ранее установили Certbot с помощью стандартной команды apt, то сначала требуется удалить его. Это гарантирует, что привязка Certbot будет работает правильно.

$ sudo apt-get remove certbot
$ sudo snap install --classic certbot
certbot 1.11.0 from Certbot Project (certbot-eff✓) installed

Включить команду certbot

После успешной установки оснастки Certbot выполните следующую команду. Эта команда включит certbot.

$ sudo ln-s /snap/bin / certbot / usr/bin/certbot

Получите сертификат Let’s Encrypt

Когда вы запустите приведенную ниже команду, certbot проведет вас через остальную часть процесса. Certbot также автоматически обновляет конфигурацию NGINX для активации HTTPS.

Получите сертификат Let's Encrypt
Получите сертификат Let’s Encrypt

$ sudo certbot —nginx

Ниже приводится краткое описание того, что certbot предложит вам сделать во время этого процесса.

  1. Укажите адрес электронной почты, на который будут отправляться уведомления о продлении и безопасности
  2. Введите Y, чтобы принять условия предоставления услуг
  3. Введите Y или N, чтобы принять или отклонить предоставление вашего адреса электронной почты разработчикам Certbot
  4. Подтвердите доменное имя или имена, для которого вы хотели бы включить HTTPS

Выход

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): shola@linoxide.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, 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 our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n
Account registered.

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: domain1.com
2: www.domain1.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):
Requesting a certificate for domain1.com and www.domain1.com
Performing the following challenges:
http-01 challenge for domain1.com
http-01 challenge for www.domain1.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/domain1
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/domain1
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/domain1
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/domain1

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://domain1.com and
https://www.domain1.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/domain1.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/domain1.com/privkey.pem
Your certificate will expire on 2021-04-10. To obtain a new or
tweaked version of this certificate in the future, simply run
certbot again with the "certonly" option. To non-interactively
renew *all* of your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Cerbot добавит следующие записи (предложения, показывающие управляемые Certbot) в файл nginx block.

$ cat /etc/nginx/sites-enabled/domain1
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
server {

server_name domain1.com www.domain1.com;

root /var/www/domain1.com;
index index.html;

location / {
try_files $uri $uri/ =404;
}

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
if ($host = www.domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

if ($host = domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
listen [::]:80;

server_name domain1.com www.domain1.com;
return 404; # managed by Certbot
}
$

Просмотрите свой веб-сайт, чтобы убедиться, что значок отображается.

Процесс Обновления Сертификата

Сертификаты, выданные компанией Let’s Encrypt, действительны в течение 90 дней. Во время установки certbot создает запланированную задачу для автоматического продления срока действия сертификатов до истечения их срока действия. До тех пор, пока вы не измените конфигурацию веб-сервера, вам не придется снова запускать certbot.

Выполните следующую команду, чтобы проверить процесс автоматического продления.

$ sudo certbot renew —dry-run

Заключение

В этом руководстве вы узнали, как настроить SSL-сертификат let’s encrypt на веб-сервере NGINX, работающем на Ubuntu 20.04.

Вместо Cerbot вы также можете использовать скрипт Acme Shell для автоматической выдачи и продления бесплатных сертификатов от Let’s Encrypt.

Если что-то неясно, напишите в разделе комментариев ниже.

Nazario

Я — Nazario, создатель и автор сайта linuxwin.ru, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем.

Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

Отправляя комментарий, вы даете согласие на обработку ваших данных в соответствии с политикой конфиденциальности и даёте согласие на их использование.