Difference between revisions of "PfSense + letsencrypt + haproxy"

From HoerupWiki
Jump to: navigation, search
(acme client på pfSense 2.3)
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
 +
 +
= acme client på pfSense 2.3=
 
Installationen er lavet på en pfsense 2.3.2p1
 
Installationen er lavet på en pfsense 2.3.2p1
  
 +
* <strike>Skrevet 2016-12-30 - justeringer kan være nødvendige iht ændringer i github fork'en osv.</strike>
 +
* <strike>Opdateret 2017-01-24 - pfSense-pkg-acme PR er blevet merget ind i pfSense</strike>
 +
* Opdateret 2017-02-04 - acme er nu også backportet til 2.3 så denne sektion er ikke længere nødvendig
  
= acme client=
+
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
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 [https://github.com/pfsense/FreeBSD-ports/pull/89 PR på github] så den skal lige bygges.
 
  
 
* Lav  en freebsd 10.3vm
 
* Lav  en freebsd 10.3vm
 
* pkg install git
 
* pkg install git
* git clone -b pfsense-acme-0.1 https://github.com/PiBa-NL/FreeBSD-ports
+
* git clone https://github.com/pfsense/FreeBSD-ports.git
 
* cd FreeBSD-ports/security/pfSense-pkg-acme/
 
* cd FreeBSD-ports/security/pfSense-pkg-acme/
 
* vim ./files/usr/local/pkg/acme/acme.inc
 
* vim ./files/usr/local/pkg/acme/acme.inc
Line 40: Line 43:
 
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
 
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 =  
+
= haproxy ssl offload =  
 
* tilføj en ny frontend
 
* tilføj en ny frontend
 
* 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")
Line 50: Line 53:
 
** Under advanced ssl options tilføje disse parametre:
 
** 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
 
  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å [https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security HSTS] til:
 +
** <code>rspadd  Strict-Transport-Security:\ max-age=15768000</code>

Latest revision as of 20:45, 4 February 2017


acme client på pfSense 2.3

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
  • Opdateret 2017-02-04 - acme er nu også backportet til 2.3 så denne sektion er ikke længere nødvendig

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