Certbot это клиент протокола ACME предназначенный для автоматического управления SSL-сертификатами от Let’s Encrypt, он позволяет полностью автоматизировать процесс получения и продления сертификата, а при использовании соответствующих плагинов даже может автоматически конфигурировать веб-сервер или иное, использующее сертификат приложение.
Все дальнейшие инструкции будут предназначены для пользователей с Debian 12, но многое будет справедливо и для иных дистрибутивов Linux.
Установим/переустановим cerboot :
sudo apt purge certbot
sudo apt autoremove
sudo apt install certbot -y
sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface
sudo apt install python3-certbot-apache
Создадим директорию для загрузки сертификатов :
mkdir /var/www/letsencrypt
mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
chown www-data:www-data /var/www/letsencrypt
Предоставим доступ к директории для загрузки сертификатов :
файл /etc/apache2/conf-available/letsencrypt.conf
Alias /.well-known/acme-challenge/ «/var/www/letsencrypt/.well-known/acme-challenge/»
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
Перезапустим apache и убедимся что нет ошибок при запуске :
sudo apachectl configtest
journalctl -xeu apache2.service
Создадим файл настроек для web сервера : /etc/apache2/sites-available/ipnetcat.ddns.net.conf
<VirtualHost *:80>
DocumentRoot /var/www/ipnetcat.ddns.net
ServerName ipnetcat.ddns.net
ServerAdmin ipanchenko.a@gmail.com
ErrorLog ${APACHE_LOG_DIR}/ipnetcat.ddns.net.error.log
CustomLog ${APACHE_LOG_DIR}/ipnetcat.ddns.net.access.log combined
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
Перезапустим apache и убедимся что нет ошибок при запуске :
sudo apachectl configtest
journalctl -xeu apache2.service
Запустим в тестовом режиме получение сертификата :
certbot certonly —dry-run —webroot -w /var/www/letsencrypt -d ipnetcat.ddns.net
И если всё хорошо, то в боевом режиме получаем сертификаты :
certbot certonly —webroot -w /var/www/letsencrypt -d ipnetcat.ddns.net
Готовим конфигурационный файл cat /etc/apache2/sites-available/ipnetcat.ddns.net-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin ipanchenko.a@gmail.com
ServerName ipnetcat.ddns.net
DocumentRoot /var/www/ipnetcat.ddns.net
ErrorLog ${APACHE_LOG_DIR}/ipnetcat.ddns.net-ssl-error.log
CustomLog ${APACHE_LOG_DIR}/ipnetcat.ddns.net-ssl-access.log combined
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/letsencrypt/live/ipnetcat.ddns.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ipnetcat.ddns.net/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/ipnetcat.ddns.net/chain.pem
<FilesMatch «\.(cgi|shtml|phtml|php)$»>
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Включаем конфигурацию И перезапускаем сервер :
a2ensite ipnetcat.ddns.net-le-ssl.conf
a2enmod rewrite
systemctl restart apache2
Не забываем сделать необходимые линки для включения конфигурации :
ipnetcat.ddns.net.conf -> /etc/apache2/sites-available/ipnetcat.ddns.net.conf
ipnetcat.ddns.net-le-ssl.conf -> /etc/apache2/sites-available/ipnetcat.ddns.net-le-ssl.conf
Несколько команда которые могут пригодится для работы с cerbot.
+ показать имеющиеся сертификаты :
certbot certificates
+ продлить сертификаты :
certbot renew