Сегодня безопасный обмен информацией в интернете по защищенному протоколу https стал фактически стандартом. Главным образом этому способствовали поисковые системы, для которых наличие ssl-сертификата стало новым фактором ранжирования сайтов в поисковой выдаче. В данной заметке речь пойдет об установке бесплатого ssl-сертификата на VPS-сервер под управлением Centos 7.
2 года я пользовался платным ssl-сертификатом от AlphaSSL, теперь решил попробовать бесплатный сертификат от Let's Encrypt и оказалось его можно установить гораздо проще, буквально одной командой. Срок действия сертифакта от Let's Encrypt всего 3 месяца, но процесс его перевыпуска полностью автоматизирован. Установку делал по инструкции с сайта certbot.eff.org и уже через 20 минут на сайте работал новый ssl-сертификат.
Перейдя на сайт, выбираем веб-сервер и операционную систему на сервере и получаем инструкцию по установке сертификата. Я приведу команды для Nginx и Centos 7. Перед выполнением этих команд нужно подключиться к VPS-серверу по ssh. Определить какая у вас стоит версия Centos можно командой:
cat /etc/centos-release
Дальше устанавливаем snapd - систему управления пакетами, через которую впоследствии будем устанавливать certbot. Есть и другие способы установки certbot, но использование для установки snapd отмечено как строго рекомендуемое.
sudo yum install snapd
Если пакет snapd не будет найден, нужно подключить репозиторий epel-release командой:
sudo yum install epel-release && sudo yum update
Добавляем snapd в автозагрузку:
sudo systemctl enable --now snapd.socket
Ключ --now позволяет тут же запустить сервис, чтобы не давать отдельную команду на запуск. Создаем символьную ссылку:
sudo ln -s /var/lib/snapd/snap /snap
Обновляем snapd до последней версии:
sudo snap install core; sudo snap refresh core
Теперь нужно убедиться в отсутствии пакета certbot, установленного через стандартный менеджер пакетов yum, а если он есть, то удалить его:
sudo yum remove certbot
У меня такого пакета не было установлено. Устанавливаем certbot через snap:
sudo snap install --classic certbot
Создаем символьную ссылку:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Теперь все готово для установки сертификата. Это можно сделать автоматически либо установить сертификат вручную. Я выбрал автоматический вариант, но перед этим сделал резервную копию конфигурационного файла nginx:
sudo cp /etc/nginx/conf.d/site.conf /etc/nginx/conf.d/site.conf.backup
sudo certbot --nginx
После запуска скрипта установки сертификата нужно будет ответить на несколько вопросов:
- - указать свой e-mail адрес, для срочных уведомлений касательно безопасности;
- - принять условия сервиса (y);
- - дать согласие на рассылку новостей(y) или отказаться от нее(n);
- - выбрать домены, для которых будет установлен сертификат, указать цифрами через пробел;
Я ошибся и указал не тот e-mail который нужно. Исправить можно командой:
sudo certbot update_account -m newmail@gmail.com
Теперь нужно протестировать автоматический перевыпуск сертификата:
sudo certbot renew --dry-run
Если все прошло успешно появится сообщение "Congratulations, all simulated renewals succeeded". А в выводе команды systemctl list-timers должена появиться строчка с юнитом snap.certbot.renew.timer, который будет отвечать за запуск сервиса автоматического перевыпуска сертификатов snap.certbot.renew.service.
Перезапускаем nginx, а также сервер генерации динамического содержимого, например Apache:
sudo systemctl restart nginx apache2
Готово. Теперь ваш сайт будет открыватся по https. В конфигурационном файле nginx все настройки сохранились, были лишь добавлены несколько строк с комментарием "# managed by Certbot". Проверить что данные сертификата обновились можно нажав на замочек рядом с адресом сайта в любом браузере.