Показать статистику
+1 голос
от (4.6тыс. баллов)
Хочу перейти с платного SSL сертфиката на бесплатные. Ищу способ автоматически продлевать бесплатный сертификат, т.к. практически все сервисы выдают сертификаты бесплатно лишь на 30-90 дней и обновлять вручную все это дело не хочется. Спасибо заранее за толковые советы!
305 просмотров 1 ответов

1 Ответ

0 голосов
от (17.4тыс. баллов)

Рекомендую обратить внимание на сервис 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/.

На этом все - процедура установки бесплатного сертификата с автоматическими обновлениям закончена. 

...