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

Comments

4

Dobrý den, není v návodu náhodou chyba? Pokud se soubor s klíčem a certifikátem jmenuje key-cert.pem, pak by i v souboru ssl-enable.conf v obsahu proměnné měl být odkaz na tento soubor, tj. na key-cert.pem nikoliv na key.pem
Míla

Dobry vecer, ano je tam chyba, diky za upozorneni :)

Staci mit dva soubory key.pem a ca.cert.

Tak jsem použil výše uvedený návod (s odkazem na key-cert.pem a ca.pem v proměnné $SERVER["socket"] == ":443" ). Bohužel výsledek je, že Tento web není dostupný
Web 192.168.1.1 odmítl připojení.
V čem udělali soudruzi chybu?

Pokud sedi jmena souboru (realna jmena s temi v konfiguraci), zkusil bych projit log (tusim ze /var/log/lighttpd/error.log ). Znovu jsem kontroloval svoji konfiguraci s návodem a shodují se, takže netuším co by se mohlo dít. Pokud nebude fungovat, napište mi na berkasimon (at) gmail.com a můžeme to zkusit pořešit přes teamviewer :)

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.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.