Hlavní navigace

Firewall pfSense: podpora Let's Encrypt

Lukáš Malý

V dnešním díle si povíme jaká existuje podpora pro certifikáty Let's Encrypt ve firewallu pfSense. Popíšeme si postup, jak instalovat balíček ACME a jak nastavit naši doménu, tak abychom ve WebGUI mohli používat SSL certifikát.

Na začátek je třeba připomenout fakt, že Firewall pfSense disponuje jednoduchou interní certifikační authoritou, která je integrovaná s dalšími službami jako je např. Nginx a OpenVPN. pfSense pro svou správu a konfiguraci používá WebGUI, které je dostupné pomocí SSL. Po instalaci firewallu je vytvořen výchozí self-signed certifikát, pak je tedy nutné v prohlížečích schvalovat výjimky pro certifikát, který nezná. Pokud chceme komfortněji pracovat SSL, je žádoucí tento problém nějak řešit. Jednou z možností je použít certifikát Let's Encrypt.

ACME

Jedná se o protokol pro komunikaci mezi web serverem a certifikační autoritou. Od verze pfSense 2.3.2-p1 existuje ACME balíček, kterým je možné získat a provozovat Let's Encrypt certifikáty. Balíček umožňuje vytvořit Account key a posléze je možné skrze několik metod validace získat certifikát. Vše je plně integrováno do Cert. managera, provede se import Let's Encrypt CA. Získaný certifikát je též uložen v interním správci certifikátů.

Instalace ACME balíčku

Instalace ACME se provádí pomocí  System / Package Manager / Available Packages, vyhledáme řetězec acme a provedeme instalaci kliknutím na zelené tlačítko Install.

pfSense-pkg-acme-0.1.19_1      pfSense package acme

Balíček má zajímavou závislost na php56-ftp, kterou potřebuje  jedna z mnoha metod validace při vydávání certifikátu, která je zjevně realizována pomocí php funkcí FTP.

Konfigurace ACME

Po instalaci balíčků se v menu Services objeví nová volba Acme Certificates. Tato volba nám poskytuje nastavení klíčů a certifikátů. Prvním krokem k získání certifikátu je vytvoření a registrace Account key. Pomocí tohoto klíče ACME komunikuje se servery Let's Encrypt.

Validační proces

Proces validace je v balíčku rozdělen na dvě metody. DNS-based methods využívající TXT záznam _acme-challenge.router.pfsense.cz. A na File-based methods. Při prvním seznamování se s ACME na pfSense jsem použil metodu DNS-Manual, která vyžaduje vždy před znovu vydáním certifikátu nastavit TXT záznam manuálně, což je velmi nepraktické.

Dalším krokem pro získání certifikátu je jeho konfigurace pomocí ACME pfSense nastavení. Zde si musíme vybrat, jakou metodu validace použijeme. Má doména pfsense.cz je registrovaná u Active24, ale na podpoře mi sdělili, že žádnou metodu DNS-NSUpdate – RFC2136 neposkytují. Rozhodl jsem doménu pfsense.cz přestěhovat a využít metodu DNS-Cloudflare. K tomuto kroku mi dopomohl článek Ondřeje Caletky.

Vytvořil jsem si účet u Cloudflare a přidal Site pfsense.cz, kde využiji jen službu DNS hosting. U AC24 jsem vytvořil NSSET NSS-CLOUDFLARE-VERA-ZEUS a nastavil přidělené DNS servery vera.ns.cloudflare.com a zeus.ns.cloudflare.com. Výměna NSSET se neobešla bez předchozího vypnutí DNSSEC. Po přesunu domény jsem DNSSEC opět zapnul na straně Cloudflare a nastavil KEYSET, dle Ondrova popisu. Následně byl můj KEYSET automaticky vyměněn za AUTO-82Y4PF3278WQ0E83AGYDAIFYR, který je stejný jako ten, co jsem si nastavil manuálně.

V profilu Cloudflare získáme API Key, který slouží k autentizaci k DNS, kde se v době získání certifikátu vytvoří již zmiňovaný TXT záznam. Ten se po dokončení opět smaže.

Před vydáním certifikátu musíme zřídit A případně CNAME záznam, pro který chceme získat certifikát.

Proces získání certifikátu trvá delší dobu a může být i ovlivněn limity, které při vydávání certifikátů existují. Po úspěšném vydání certifikátu již stačí jen v menuSystem / Advanced / Admin Access vybrat získaný certifikát. V menuGeneral settings je možnost zapnout Acme client renewal job. Který zajistí opětovné získání certifikátu, před jeho expirací. Pro plnou funkcionalitu je nutné ještě u nastavení certifikátu natavit akci restartování WebGUI/etc/rc.restart_webgui s metodou Restart Local Service, pro načtení nově získaného certifikátu.

Certificate Manager

Cert. manager je integrován s balíčkem ACME. Postup, který jsme si popsali zajistil přidání Let's Enctypt CA i certifikátu do správce certifikátů.

Kde nasadit Let's Encrypt

Použití Let's Encrypt certifikátů je vhodné použít tam, kde nechceme schvalovat výjimky. Ale větší význam má tam, kde je pfSense používán jako haproxy.

Našli jste v článku chybu?