====== Let's Encypt + ISPmanager 4 ======
CentOS 6 (6.10, 2.6.32-642.15.1.el6.x86_64), ISPmanager 4 (4.4.10.23), nginx+apache
===== Подготовка. Certbot. =====
Скачиваем [[https://certbot.eff.org/lets-encrypt/centos6-nginx|certbot]]
# wget https://dl.eff.org/certbot-auto
# mv certbot-auto /usr/local/bin/certbot-auto
# chown root /usr/local/bin/certbot-auto
# chmod 0755 /usr/local/bin/certbot-auto
===== Получаем сертификат, но сначала python3 =====
Я использовал плагин nginx
# /usr/local/bin/certbot-auto certonly --nginx
Т.к. CentOS 6 старый, и его старый python27 уже EOL, а certbot'у нужен новый python3, то сначала подключается SCL
Bootstrapping dependencies for Legacy RedHat-based OSes that will use Python3... (you can skip this with --no-bootstrap)
yum is hashed (/usr/bin/yum)
To use Certbot on this operating system, packages from the SCL repository need to be installed.
---CUT---
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
centos-release-scl noarch 10:7-4.el6.centos extras 12 k
Installing for dependencies:
centos-release-scl-rh noarch 2-4.el6.centos extras 12 k
и далее устанавливается новый python3
===========================================================================================
Package Arch Version Repository Size
===========================================================================================
Installing:
augeas-libs x86_64 1.0.0-10.el6 base 314 k
gcc x86_64 4.4.7-23.el6 base 10 M
libffi-devel x86_64 3.0.5-3.2.el6 base 18 k
mod_ssl x86_64 1:2.2.15-69.el6.centos base 99 k
openssl-devel x86_64 1.0.1e-58.el6_10 updates 1.2 M
redhat-rpm-config noarch 9.0.3-51.el6.centos base 60 k
rh-python36-python x86_64 3.6.9-2.el6 centos-sclo-rh 55 k
rh-python36-python-devel x86_64 3.6.9-2.el6 centos-sclo-rh 918 k
rh-python36-python-virtualenv noarch 15.1.0-2.el6 centos-sclo-rh 1.8 M
Installing for dependencies:
cloog-ppl x86_64 0.15.7-1.2.el6 base 93 k
cpp x86_64 4.4.7-23.el6 base 3.7 M
glibc-devel x86_64 2.12-1.212.el6_10.3 updates 991 k
glibc-headers x86_64 2.12-1.212.el6_10.3 updates 620 k
iso-codes noarch 3.16-2.el6 base 2.4 M
kernel-headers x86_64 2.6.32-754.27.1.el6 updates 4.6 M
keyutils-libs-devel x86_64 1.4-5.el6 base 29 k
krb5-devel x86_64 1.10.3-65.el6 base 504 k
libcom_err-devel x86_64 1.41.12-24.el6 base 33 k
libgomp x86_64 4.4.7-23.el6 base 135 k
libkadm5 x86_64 1.10.3-65.el6 base 143 k
libselinux-devel x86_64 2.0.94-7.el6 base 137 k
libsepol-devel x86_64 2.0.41-4.el6 base 64 k
mpfr x86_64 2.4.1-6.el6 base 157 k
ppl x86_64 0.10.2-11.el6 base 1.3 M
rh-python36-python-libs x86_64 3.6.9-2.el6 centos-sclo-rh 7.5 M
rh-python36-python-pip noarch 9.0.1-2.el6 centos-sclo-rh 1.8 M
rh-python36-python-setuptools noarch 36.5.0-1.el6 centos-sclo-rh 584 k
rh-python36-runtime x86_64 2.0-1.el6 centos-sclo-rh 1.0 M
scl-utils-build x86_64 20120927-29.el6_9 base 17 k
xml-common noarch 0.6.3-33.el6 base 18 k
zlib-devel x86_64 1.2.3-29.el6 base 44 k
После установки RPM пакетов уже привычный процесс получения сертификата
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): admin@foobar.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: foobar.com
2: www.foobar.com
3: city17.org
4: www.city17.org
===== ISPmanager =====
В свойствах WWW-домена создаем новый самоподписанный сертификат.
Делаем симлинки
# ln -sf /etc/letsencrypt/live/foobar.com/fullchain.pem /var/www/httpd-cert/isp_user/foobar.com.crt
# ln -sf /etc/letsencrypt/live/foobar.com/privkey.pem /var/www/httpd-cert/isp_user/foobar.com.key
===== Автообновление =====
Этот пункт оказался единственным где возникли проблемы.
Вручную через терминал сертификат обновлялся успешно, а через cron была ошибка
Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly
По советам с форума LE сначала попробовал добавить ''--nginx-ctl'' и ''--nginx-server-root'' для явного указания на директорию с бинарником и на директорию с конфигурационными файлами.
--nginx-server-root NGINX_SERVER_ROOT
Nginx server root directory. (default: /etc/nginx or
/usr/local/etc/nginx)
--nginx-ctl NGINX_CTL
Path to the 'nginx' binary, used for 'configtest' and
retrieving nginx version number. (default: nginx)
Вот так
0 */12 * * * /usr/local/bin/certbot-auto renew --nginx --nginx-ctl /usr/sbin/nginx --nginx-server-root /etc/nginx && /etc/init.d/nginx reload
Это не помогло. Проблема была в **$PATH**. Еще раз все проверяю
# which nginx
/usr/sbin/nginx
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
Нунжо установить переменную PATH для cron. Значение по-умолчанию для cron **PATH=/usr/bin:/bin**. Именно поэтому cron не смог найти мой nginx.
Добавляем в crontab
# EDITOR=nano crontab -e
перед строкой ''MAILTO""''
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
Всё готово!
UPD 09.03.2021
По-умолчанию обновление сертификата происходит за 30 дней до окончания срока действия.
Это регулируется опцией **renew_before_expiry** в файле ''/etc/letsencrypt/renewal/foobar.com.conf''
{{tag>linux centos ssl lets_encrypt nginx certbot ispmanager}}