Let's Encrypt
- otevřená a automatizovaná certifikační autorita zdarma
- stačí kontrolovat webserver nebo doménu
- ověření po HTTP - pozor na přesměrování z HTTP na HTTPS
- platnost certifikátu cca 3 měsíce
- automatické obnovování (cronjob)
- wildcard certifikáty v lednu 2018
- nutnost zálohovat
- rate-limits (https://letsencrypt.org/docs/rate-limits)
Certbot
- nástroj pro získání certifikátů od CA využívajících ACME protokol
- dostupný v běžnách distribucích (RHEL/CentOS 7 - EPEL)
- podpora apache/2.x a nginx/0.8.48+
- pluginy
- apache - získání a konfigurace
- nginx - získání a konfigurace
- webroot - použití webrootu běžícího webserveru
- standalone - spustí vlastní webserver na portu 80 nebo 443
- manual
Konfigurace HAProxy
frontend http-in
bind 0.0.0.0:443 ssl crt /self_sign.pem ssl crt /etc/pki/tls/haproxy/
bind 0.0.0.0:80
mode http
use_backend letsencrypt if { path_beg -i /.well-known/acme-challenge/ }
redirect scheme https code 301 if !{ ssl_fc } { hdr(host) -i example.com www.example.com }
use_backend backend_app if { hdr(host) -i example.com www.example.com }
listen letsencrypt
mode http
balance roundrobin
server haproxy01 192.168.0.10:9999
server haproxy02 192.168.0.11:9999
listen backend_app
mode http
balance leastconn
http-check expect rstatus (2..)
server webserver01 192.168.0.20:80 check
server webserver02 192.168.0.21:80 check
Konfigurace HAProxy - frontend
frontend http-in
bind 0.0.0.0:443 ssl crt /self_sign.pem ssl crt /etc/pki/tls/haproxy/
bind 0.0.0.0:80
mode http
use_backend letsencrypt if { path_beg -i /.well-known/acme-challenge/ }
redirect scheme https code 301 if !{ ssl_fc } { hdr(host) -i example.com www.example.com }
use_backend backend_app if { hdr(host) -i example.com www.example.com }
- defaultní self-signed certifikát /self_sign.pem
- ostatní certifikáty v /etc/pki/tls/haproxy/
- ověřovací cesta LE směřována na backend letsencrypt
Konfigurace HAProxy - backend
listen letsencrypt
mode http
balance roundrobin
option redispatch
server haproxy01 192.168.0.10:9999
server haproxy02 192.168.0.11:9999
- LE požadavky končí zpět na IP adrese HAProxy na portu 9999
option redispatch
- přeposílá požadavek na další dostupný server (defaultně povolený)
Žádost o LE certifikát
cert_path=/etc/letsencrypt/live/example.com/
haproxy_path=/etc/pki/tls/haproxy/
certbot --text --agree-tos certonly -a standalone \
--keep-until-expiring -d example.com -d www.example.com --non-interactive \
--standalone-supported-challenges http-01 --http-01-port 9999 |
grep "Congratulations" &&
cat $cert_path/{fullchain.pem,privkey.pem} > $haproxy_path/example.com.pem &&
/sbin/service haproxy reload
- běží v cronu na obou haproxy
Let's Encrypt na HA HAProxy - vlastnosti
- plně automatizované a konfigurovatelné
- duplicitní certifikát! (limit 5 certifikátů/týden)
- privátní klíč neopouští server/VM
- není potřeba zálohovat