Administrace Turrisu s vlastním SSL certifikátem

Router Turris Omnia je skvělá věc. Existují však oblasti, kde si jej můžeme snadno vylepšit. Například obě administrace - Foris i LuCi jsou dostupné na HTTP i HTTPS. Avšak HTTP nepřesměrovává na HTTPS a certifikát je logicky self-signed.

Stav, který zřejmě potřebujete: důvěryhodný SSL certifikát a automatické přesměrování z HTTP na HTTPS. Pro své služby (intranet, privátní služby dostupné přes internet) provozuji vlastní CA. Můžu si tak generovat certifikáty pro co chci a na delší dobu, než pár měsíců. Navíc administrace routeru je dotupná pouze z lokální sítě (i když přes doménové jméno), Lets Encrypt by tedy byl velmi složitě proveditelný.

TIP: pokud si chcete vytvořit vlastní CA a neznáte patřičnou teorii, zde je dobrý základ s praktickými ukázkami.

TIP2: Při generování certifikátu mějte na paměti, přes jako adresu do administrace přistupujete (IP adresa nebo doménové jméno). Certifikát vystavený pro doménové jméno nebude důvěryhodný při přístupu přes IP adresu a naopak!

Nahrazení self-signed certifikátu vlastním

Generování certifikátu je tedy plně na vás, nyní budeme potřebovat privátní klíč, samotný certifikát a "ca chain".

Klíč a certifikát pro doménu se musí nacházet v jednom souboru - nejlépe v pořadí klíč, certifikát. Pro přehlednost si můžete soubory uložit do složky /root/ssl

mkdir /root/ssl
touch /root/ssl/key-cert.pem
touch /root/ssl/ca.pem

Do souboru key-cert.pem přijde klíč a certifikát, do ca.pem přijde CA chain.

Nyní je třeba upravit konfigurační soubor pro SSL:

nano /etc/lighttpd/conf.d/ssl-enable.conf

Obsah proměnné $SERVER["socket"] == ":443" vymažeme a nahradíme jej tímto textem:

        ssl.engine = "enable"
        ssl.use-sslv2 = "disable"
        ssl.use-sslv3 = "disable"
        ssl.pemfile = "/root/ssl/key.pem"
        ssl.ca-file = "/root/ssl/ca.cert"

To samé můžete provést pro proměnnou níže (konfiguruje HTTPS pro přístup přes IPv6).

Nakonec restartujte lighttpd pomocí příkazu

/etc/init.d/lighttpd restart

Foris i LuCi by nyní mělo běžet s vlastním certifikátem. Ale počkat, to není všechno!

Přesměrování HTTP na HTTPS

Bylo by zbytečné obtěžovat se s důvěryhodným certifikátem a nemít nastavené automatické přesměrování na HTTPS. Toho docílíte přidáním několika řádků opět do souboru /etc/lighttpd/conf.d/ssl-enable.conf, tentokrát na jeho začátek.

$SERVER["socket"] == ":80" {
        $HTTP["host"] =~ "(.*)" {
                url.redirect = ( "^/(.*)" => "https://%1/$1" )
        }
}

Nezapomeňte na restart

/etc/init.d/lighttpd restart

TIP3: Pokud se rozhodnete na router nasadit Let's Encrypt, můžete se řídit třeba tímto návodem.

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
By submitting this form, you accept the Mollom privacy policy.