Рекомендую обратить внимание на сервис certbot.eff.org. Я использую Nginx на Ubuntu 18.04, инструкция по настройке и автоматическому обновлению SSL сертификата здесь (на английском).
Вот мой перевод этой же инструкции на русский.
Исходные данные:
Веб сервер: Nginx
# nginx -v
nginx version: nginx/1.14.0 (Ubuntu)
Версия операционной системы:
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
Заходим на ваш сервер по SSH
Ваша учетная запись на сервере должна иметь привелегии sudo (возможность переходить в суперпользователя root)
Устанавливаем snapd
Поскольку у меня Ubuntu, ставится snapd так:
$ sudo apt update
$ sudo apt install snapd
На этом этапе рекомендуется завершить текущую SSH сессию что бы убедиться что переменные окружения PATH были обновлены. Что бы проверить корректность установки snapd, выполните:
$ sudo snap install hello-world
hello-world 6.4 from Canonical✓ installed
$ hello-world
Hello World!
Убедимся что установлена последняя версия snapd
Для этого выполним в терминале:
sudo snap install core; sudo snap refresh core
В моем случае никаких дополнительных обновлений не потребовалось, поскольку я получил такое сообщение:
snap "core" is already installed, see 'snap help refresh'
snap "core" has no updates available
Вот пример когда после установки snap, core все таки потребовала обновление:
2020-12-01T20:50:22+01:00 INFO Waiting for automatic snapd restart...
core 16-2.48 from Canonical✓ refreshed
Теперь нужно удалить все ранее установленные Certbot пакеты, если таковые имеются
sudo apt-get remove certbot
Если Certbot ранее установлен не был, получите сообщение Package 'certbot' is not installed, so not removed
Устанавливаем Certbot
sudo snap install --classic certbot
В случае успешной установки, получите сообщение: certbot 1.8.0 from Certbot Project (certbot-eff✓) installed
Убедимся что команда certbot выполняется
Для этого создадим символическую сслылку:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Выбираем как мы хотим получать и устанавливать сертификат
Здесь есть две опции. Первая - мы хотим что бы certbot автоматически обновил конфигурацию Nginx и далее выполнял автообновление сертификата. Я воспользовался этой опцией, проблем не было. Для этого выполните:
sudo certbot --nginx
Второй вариант - если мы хотим быть более осторожными, и нам нужен только сам файл сертификата (правки конфигурационных файлов мы хотим делать самостоятельно):
sudo certbot certonly --nginx
Проверим автоматическое обновление
Certbot в дальнейшем будет сам обновлять ваш сертификат. Что бы убедиться в корректной работе автообновления, выполним команду (никаких изменений не будет сделано, т.к. это так называемый "сухой тест" - т.е. только тест и ничего более):
sudo certbot renew --dry-run
В случае успеха, среди прочего вывода вы обнаружите такой текст: Congratulations, all renewals succeeded
Команда на автообновление может быть проверена через
systemctl list-timers
В моем случае вывод был такой:
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sat 2020-10-03 15:03:00 PDT 3h 18min left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
Убедитесь что сертификат работает корректно
Для этого перейдите по ссылке https://www.ssllabs.com/ssltest/.
На этом все - процедура установки бесплатного сертификата с автоматическими обновлениям закончена.