PfSense + letsencrypt + haproxy
Installationen er lavet på en pfsense 2.3.2p1
acme client
Skrevet 2016-12-30 - justeringer kan være nødvendige iht ændringer i github fork'en osv.
Acme er protokollen bag letsencrypt, så der skal installeres noget software til at styre denne. Pt er den ikke officielt med i pfSense, men ligger som en PR på github så den skal lige bygges.
- Lav en freebsd 10.3vm
- pkg install git
- git clone -b pfsense-acme-0.1 https://github.com/PiBa-NL/FreeBSD-ports
- cd FreeBSD-ports/security/pfSense-pkg-acme/
- vim ./files/usr/local/pkg/acme/acme.inc
- gå til linie 516
- efter linien
$directory = $domain_info['webrootfolder'];
tilføjes disse 2 linier
if ( isset($directory)==false || $directory == "") $directory = "/usr/local/www/.well-known/acme-challenge/";
- byg pakken med
make package
- kopier work/pkg/pfSense-pkg-acme-0.1.txz over på pfSense
- installer med
pkg install pfSense-pkg-acme-0.1.txz
acme validering + haproxy
letsencrypt/acme kan validere domain på flere måder (http/ftp/dns mm) og pfsense/acme indeholder metoder til dem alle(+ en håndfuld integrationer til dns validering), dog vil jeg mene at http valideringen er den enkleste.
- Installer haproxy pakken på pfSense hvis den ikke allerede er der
- tilføj en backend der peger på pfsense management interfacet
- på port 80 frontend'en
- tilføj en ACL:
- Name: acme
- Expression: Path starts with
- Value: /.well-known
- Tilføj en regel der knytter acme ACL'en sammen med pfsense backend'en
- tilføj en ACL:
- gem + reload osv.
Der er nu klar til at få lavet letsencrypt certs med http validering:
acme certificater
pfSense -> services -> Acme Certificates
Tilføj nye certs til de domæner der skal bruges. Ved method på de enkelte domæner husk at bruge webroot local folder. Når du har gemt kan du på acme certificates siden vælge "Issue/renew". Hele seancen skulle helt ende med at de nye certifikat bliver importeret ind til pfsense
haproxy ssl offload
- tilføj en ny frontend
- sæt den til at lytte på port 443 og sæt flueben ved ssl offload
- sæt selv om med ACL og actions om nædvendigt
- sæt flueben ved "use forwardfor option" (Note: pfsense/haproxy tilføjer også selv en X-Forwarded-Proto header)
- Under SSL offloading
- Vælg dit primære certificate (sæt flueben ved begge "add ACL")
- Tilføj øvrige "additional cerificates" (sæt flueben ved begge "add ACL")
- Under advanced ssl options tilføje disse parametre:
no-sslv3 ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
- Tilføj evt. denne under "Advanced pass thru" for at slå HTST til:
rspadd Strict-Transport-Security:\ max-age=15768000