PfSense + letsencrypt + haproxy

From HoerupWiki
Revision as of 20:05, 24 January 2017 by Torben (talk | contribs)
Jump to: navigation, search


acme client

Installationen er lavet på en pfsense 2.3.2p1

Skrevet 2016-12-30 - justeringer kan være nødvendige iht ændringer i github fork'en osv.

Opdateret 2017-01-24 - pfSense-pkg-acme PR er blevet merget ind i pfSense

Acme er protokollen bag letsencrypt, så der skal installeres noget software til at styre denne. Den er trukket ind som en pakke der kommer med i pfSense 2.4. Nedenfor vises hvordan den bygges til 2.3

  • Lav en freebsd 10.3vm
  • pkg install git
  • git clone https://github.com/pfsense/FreeBSD-ports.git
  • 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
  • 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å HSTS til:
    • rspadd Strict-Transport-Security:\ max-age=15768000