- Certbot - установка
FreeBSD# cd /usr/ports/security/py-certbot # make install clean
Ubuntu
Пробуем:# apt-get install certbot
Если не найдена, значит у вас старая версия убунты и необходимо сделать так:sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install letsencrypt
- Регистрация в Let's Encrypt (одноразово)
# certbot register --email your@email.com
- Получение сертификатов "вручную" (standalone)
Подходит, если вам нужен сертификат не для сайта, а, например, почтовика и когда не установлен web-сервер.
В процессе получения сертификатов таким способом, на сервере должен быть свободен 80-й порт, что означает необходимость тушить web-сервер на время получения сертификатов;
# certbot certonly --standalone -d mysite.com -d mail.mysite.com
- Обновление сертификатов для сайтов
Это случай, когда certbot должен обновлять сертификаты на сервере, где работает web-сервер и который тушить крайне нежелательно.
Создаем директорию .well-known, в которой certbot будет создавать файлы, необходимые для проверки прав на домены. Я такую сделал на default сайте, но вы можете делать её где угодно:# mkdir /sites/_default/htdocs/.well-known
Для проверки, создайте там html-файл, он должен быть доступен по http(s) с сайтов, для которых выпускается сертификат.
Создаем файл с настройками certbot
FreeBSD - /usr/local/etc/letsencrypt/cli.iniauthenticator = webroot webroot-path = /sites/_default/htdocs post-hook = /usr/local/etc/rc.d/nginx reload text = True
Ubuntu - /etc/letsencrypt/cli.iniauthenticator = webroot webroot-path = /sites/_default/htdocs post-hook = systemctl reload nginx text = True
Затем, добавляем в конфигурацию веб-сервера:
- nginx - делаем include-файл с location внутри для nginx. Обзываем его acme.inc.
location /.well-known { root /sites/_default/htdocs; }
Этот файл нужно будет добавить в nginx во все server, для сайтов которых обновляются сертификаты:include /usr/local/etc/nginx/acme.inc;
- apache2 - делаем файл conf-available/certbot.conf
Alias /.well-known /sites/_default/htdocs/.well-known
Делаем конфигурацию активной, разместив ссылку на файл в директории conf-enabled (пример для Ubuntu)# cd /etc/apache2/conf-enabled # ln -s ../conf-available/certbot.conf
Пробуем тестовый (--dry-run) запрос сертификата:# certbot certonly --dry-run -d mysite.com -d www.mysite.com .... IMPORTANT NOTES: - The dry run was successful.
Получаем сертификат по-настоящему:# certbot certonly -d mysite.com -d www.mysite.com
Если вдруг приспичило добавить в сертификат новый поддомен, то запускаем так (перечисляем уже существующие домены плюс добавляем новый):# certbot certonly --expand -d mysite.com -d www.mysite.com -d new.mysite.com
- nginx - делаем include-файл с location внутри для nginx. Обзываем его acme.inc.
- Автоматическое обновление через cron
В Ubuntu о нас уже позаботились, команда для запуска находится в файле /etc/cron.d/certbot, единственное, что нужно сделать, это добавить в файле в конец строки запуска (после certbot -q renew) ключ:--allow-subset-of-names
Для FreeBSD добавляем в cron строчку:33 */12 * * * /usr/local/bin/certbot renew --quiet --allow-subset-of-names
33 - обязательно замените на число от 0 до 59;
--allow-subset-of-names - этот ключ при обновлении позволяет пропускать те домены, для которых нельзя подтвердить владение. Если ключ не задать, то certbot будет вываливаться с ошибкой и не получит новый сертификат. Если сертификат был выпущен для нескольких доменов, то просрочка будет для всех доменов сертификата.
- Отзыв сертификата:
FreeBSD
# certbot revoke --cert-path /usr/local/etc/letsencrypt/live/CERTNAME/cert.pem
Ubuntu# certbot revoke --cert-path /etc/letsencrypt/live/CERTNAME/cert.pem
Удаление сертификата с диска сервера:# certbot delete --cert-name mysite.com
- nginx - пути к сертификатам для добавления в блок server
FreeBSDssl_certificate /usr/local/etc/letsencrypt/live/mysite.com/fullchain.pem; ssl_certificate_key /usr/local/etc/letsencrypt/live/mysite.com/privkey.pem;
Ubuntussl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem;
- apache2 - пути к сертификатам для добавления в блок VirtualHost
FreeBSDSSLEngine on SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/mysite.com/privkey.pem; SSLCertificateFile /usr/local/etc/letsencrypt/live/mysite.com/cert.pem; SSLCertificateChainFile /usr/local/etc/letsencrypt/live/mysite.com/chain.pem;
UbuntuSSLEngine on SSLCertificateKeyFile /etc/letsencrypt/live/mysite.com/privkey.pem; SSLCertificateFile /etc/letsencrypt/live/mysite.com/cert.pem; SSLCertificateChainFile /etc/letsencrypt/live/mysite.com/chain.pem;
- Посмотреть данные сертификата
# openssl x509 -in cert.pem -noout -text
Статья опубликована: 2018-02-22 11:38:06
Последние правки: 2019-06-15 16:55:05
Let's Encrypt - центр сертификации от некоммерческой организации ISRG, существующий при поддержке EFF и многих компаний, взявшей на себя миссию дать людям бесплатные SSL/TLS сертификаты для сайтов и серверов. Работать с Let's Encrypt будем через программу Certbot. ОС: FreeBSD или Ubuntu.