Wiki » Debian konfiguracja usług »
LetsEncrypt¶
Instalacja certyfikatu SSL dla Apache z LetsEncrypt HTTP-01 PokażUkryj
apt -y update; \ apt-get install -y certbot python3-certbot-apache; \ systemctl restart apache2; \ certbot -m webmaster@justnet.pl --agree-tos; \ systemctl restart apache2; # kiedyś było wymagane: #echo -e "<Directory /var/lib/letsencrypt/http_challenges/>\n\tOrder allow,deny\n\t\tallow from all\n\tRequire all granted\n</Directory>" > /etc/apache2/conf-available/lestencrypt.conf; \ #ln -s /etc/apache2/conf-available/lestencrypt.conf /etc/apache2/conf-enabled/lestencrypt.conf; \
Instalacja certyfikatu SSL dla usług poczty(exim i dovecote) PokażUkryj
Dla vhost odpowiedzialnego za webmail generujemy subdomeny smtp, pop, pop3, imap itp poprzez dodanie w vhost aliasów
ServerAlias smtp.justnet.pl ServerAlias pop.justnet.pl ServerAlias pop3.justnet.pl ServerAlias imap.justnet.pl
Rozszerzamy aktualne certyfikaty wydając komendę certbot --apache i wybierając opcje Expand
Dodanie certyfikatów dla Dovecot w pliku /etc/dovecot/conf.d/10-ssl.conf, zmieniamy:
ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key
na (przykład dla domeny justnet.pl)
ssl_cert = </etc/letsencrypt/live/mail.justnet.pl/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.justnet.pl/privkey.pem
Uprawnienia dla Dovecot:
chmod -cR 711 /etc/letsencrypt/live echo '0 4 1 * * root /etc/init.d/dovecot restart' > /etc/cron.d/certbot
Konfiguracja HAProxy PokażUkryj
Dodanie SSL na 443 w sekcji frontend
#bind :443 ssl crt /etc/letsencrypt/live/fullchains/fullchain.pem
Dodanie przekierowania w sekcji frontend:
acl is_letsencrypt-acl path_beg /.well-known/acme-challenge/ use_backend letsencrypt-backend if is_letsencrypt-acl
Dodanie backend:
backend letsencrypt-backend server letsencrypt 127.0.0.1:8888
Dodanie przekierowanie HTTP do HTTPS w sekcji frontend
http-request redirect scheme https unless { ssl_fc }
Przykład pełnego wpisu
frontend http-in
bind :80
#bind :443 ssl crt /etc/letsencrypt/live/fullchains/cert.pem
mode http
http-request redirect scheme https unless { ssl_fc }
# Strip port from Host header
http-request replace-value Host (.*):.* \1
acl is_letsencrypt-acl path_beg /.well-known/acme-challenge/
use_backend letsencrypt-backend if is_letsencrypt-acl
backend letsencrypt-backend
server letsencrypt 127.0.0.1:8888
Pobranie konfiguracji przez certbot PokażUkryj
echo -e '#!/bin/bash -x' "\n\n" >> /etc/haproxy/certbot.sh
echo "certbot -m webmaster@justnet.pl --agree-tos; certonly --standalone --preferred-challenges http-01 --http-01-port 8888 --http-01-address 127.0.0.1 -d domain1.xyz -d domain1.xyz" >> /etc/haproxy/certbot.sh; \
chmod +x /etc/haproxy/certbot.sh; \
bash /etc/haproxy/certbot.sh; \
\
for domain in `find /etc/letsencrypt/live/* -maxdepth 1 -type d|xargs`; do ln -s ${domain}/privkey.pem ${domain}/fullchain.pem.key; done;
Podajemy port 8888 na którym słucha certbot, na port 8888 zostanie przekierowane zapytanie przez HAProxy z portu 80