====== 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}}