В данной инструкции объясняется, как создать SSL-сертификат для домена (доменов) с помощью Certbot.
Для создания самоподписанного (self-signed) сертификата, используйте этот скрипт или acert. Созданный сертификат нужно добавить в список доверенных сертификатов в хроме:
- Откройте раздел сертификатов в настройках:
chrome://settings/certificates
(Chrome settings > Security > Manage certificates
). - Откройте вкладку "Authorities".
- Нажмите "Import" и укажите созданный файл certificate authority.
Выжимка из документации (Ubuntu 20.04 + nginx):
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ certbot --nginx -d example.com
Чтобы не получать сертификаты отдельно для каждого поддомена, можно настроить сертификат для всех поддоменов. Certbot позволяет сделать это, если использовать получение сертификата через DNS.
Прежде всего необходимо установить плагин для вашего провайдера DNS. Например, для DigitalOcean это certbot-dns-digitalocean:
$ sudo snap install certbot-dns-digitalocean
Создайте файл certbot-digitalocean.ini
с токеном API DigitalOcean и установите на него права с помощью следующей команды:
$ chmod 600
Затем создайте файл create-certificate.sh
:
#!/bin/bash
certbot certonly \
--dns-digitalocean \
--dns-digitalocean-credentials ./certbot-digitalocean.ini \
-d domain.com \
-d *.domain.com
Осталось дать права на выполнение файла и запустить его:
$ chmod +x create-certificate.sh
$ ./create-certificate.sh
- https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx
- https://certbot.eff.org/docs/using.html#dns-plugins
- https://certbot-dns-digitalocean.readthedocs.io/en/stable/
- https://www.digitalocean.com/community/tutorials/how-to-create-let-s-encrypt-wildcard-certificates-with-certbot
Для автоматического обновления сертификата необходимо настроить запуск следующего скрипт каждый месяц с помощью Cron или Jobber:
#!/bin/bash
sudo certbot renew --nginx
В случае, если настроили получение сертификата через DNS:
#!/bin/bash
certbot renew \
--dns-digitalocean \
--dns-digitalocean-credentials ./certbot-digitalocean.ini
Не забудьте дать права на выполнение файла:
$ chmod +x renew-certificate.sh