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
Chyba v návodu
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
Dobry vecer, ano je tam chyba, diky za upozorneni :)
Staci mit dva soubory key.pem a ca.cert.
Chyba v návodu
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
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