Difference between revisions of "PfSense + letsencrypt + haproxy"

From HoerupWiki
Jump to: navigation, search
Line 44: Line 44:
 
* sæt den til at lytte på port 443 og sæt flueben ved ssl offload
 
* 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 selv om med ACL og actions om nædvendigt
* sæt flueben ved "use forwardfor option"
+
* sæt flueben ved "use forwardfor option" (Note: pfsense/haproxy tilføjer også selv en X-Forwarded-Proto header)
 
* Under SSL offloading
 
* Under SSL offloading
 
** Vælg dit primære certificate (sæt flueben ved begge "add ACL")
 
** Vælg dit primære certificate (sæt flueben ved begge "add ACL")

Revision as of 18:44, 30 December 2016

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
  • 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