На тесте установлю ACME клиент Certbot в Ubuntu 18.04, который поможет получить бесплатные SSL сертификаты Let’s Encrypt на 90 дней и автоматически обновлять их.
Для других версий Ubuntu клиент Certbot устанавливается аналогично.
Первым делом добавим репозиторий Certbot и выполним установку:
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache
В разных версиях Linux пакет может называться по разному, например:
apt-cache search certbot
sudo apt install python3-certbot-apache
Если вместо apache2 используется nginx, то вместо последней команды выполним:
sudo apt-get install python-certbot-nginx
Теперь запустим Certbot чтобы получить SSL сертификат:
sudo certbot --apache
Или:
sudo certbot --nginx
Чтобы вручную внести изменения в конфигурацию Apache2 и Certbot не изменял её, можно выполнить команду:
sudo certbot --apache certonly
Или:
sudo certbot --nginx certonly
После запуска команды, необходимо выбрать сайт для которого будет запрашиваться SSL сертификат.
После получения сертификата отобразилась информация:
IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-08-01. 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»
— Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
Создался отдельный файл конфигурации сайта для HTTPS, а в том что был добавились строки выполняющие переадресацию с HTTP на HTTPS, общем аналогичные изменения как я описывал в этой статье — Установка и настройка Let’s Encrypt SSL.
Для автоматического обновления необходимо выполнить команду:
sudo certbot renew
Команду также можно добавить в Cron для автоматического обновления, смотрите мою статью — Использование и настройка CRON
Пример добавления в Cron (каждый понедельник в 3:15):
sudo crontab -e
15 3 * * 1 certbot renew >> /var/log/certbot-renew.log
Либо в /etc/crontab:
15 7 * * 1 root certbot renew >> /var/log/certbot-renew.log
Если сертификаты указаны также в Postfix и Dovecot, то эти службы нужно перезапускать чтобы загрузился новый сертификат, это можно сделать добавив к команде:
15 7 * * 1 root certbot renew --post-hook "service postfix restart; service dovecot restart" >> /var/log/certbot-renew.log
Для тестового обновления можно выполнить команду (конфигурация и сертификаты не будут затронуты):
sudo certbot renew --dry-run
Если срок сертификата еще не истекает и запустить обновление, то ничего не произойдет.
Для обновления сертификатов apache2 также должен работать на 80 порту.
Чтобы обновить версию самого Certbot, выполним команды:
sudo apt update
sudo apt install certbot
Если certbot был установлен например с apache2, а потом apache2 удалили и установили nginx, то в файлах /etc/letsencrypt/renewal/* нужно изменить «authenticator» и «installer».
Для удаления сертификата и всех связанных с ним данных используется команда (после ввода необходимо выбрать домен):
sudo certbot delete
Либо можно сразу указать какой удалить:
sudo certbot delete --cert-name ixnfo.com
Смотрите также мои статьи:
- Перенаправление запросов на SSL
- Настройка HTTPS в Apache
- Как изменить email после регистрации Certbot (Let’s Encrypt)
- Проблема с несколькими SSL на одном IP