Das Thema wurde sicher schon mal in ähnlicher weise ausgekotzt. Firefox macht aus jedem expliziten http:// ein https://. Ganz gleich, ob das nun eine lokale Adresse ist oder eben das gefährliche WWW. Die Idee dahinter ist mir natürlich klar. Im Internet will ich https:// und auch weniger technisch versierte Personen sollten in den Genuss von Verschlüsselung kommen. Aber im lokalen Netz?
Ich habe einen kleinen Pi laufen, auf dem ich eine kleine, feine Webseite für mich betreibe (http://[hostname]/). Einfach nur ein privates lokales Projekt, an dem ich sowohl für Desktop, als auch für die mobile Ansicht vor mich hin schreibe. Und von Firefox wird mir in meinem eigenen “sicheren” Netzwerk obtruiert, dass ich diese Spielerei verschlüssle. Es könnte ja meine Katze bei HTTP mitlesen. Oder noch schlimmer irgendwelche Gäste, die erst mal ihr Notebook mit Matrix- und Hackerman-Aufkleber auf den Küchentisch stellen und Wireshark anschmeißen, ehe sie sich mit mir unterhalten wollen?
Klar, mit unnötig komplizierten Kniffs (about:config) kann man die Nutzung von http:// erlauben, aber Firefox for Android scheint es einfach so zu machen, wie es gerade am liebsten passt. Parallelen zur Mondstellung? Abhängigkeiten zum Wetter? Man weiß es nicht. Eine Konfiguration neben “HTTPS Only” (deaktiviert!) gibt es nicht. Sollte es nicht möglich sein, einen Hostname auf Ursprung (LAN/WAN) zu prüfen?
Ich komme dann also wieder, wenn Firefox an meinem Self-Signed Certificate scheitert…
tl;dr Firefox zwingt zu HTTPS weshalb ich auf privaten Intranet-Webseiten zu self-signed TLS/SSL wechseln muss, worauf ich keine Lust habe
Edit Ihr habt ja Recht, meine Spielereien sollten sich in die ‘echte’ Welt integrieren können. Hacks, damit sie eine Sonderrolle spielen, sind also auch Quatsch.
“Kommt maximal auf die Todo.” hat mich kalt erwischt, dort steht SSL schon eine Weile ;-) Ich habe nun ein bisschen herum schrauben müssen, komische Fehler erhalten und auch irgendwelche kruden Dinge mit Android und exportierten Zertifikaten gemacht. Aber das Thema ist nun durch, so unnötig ich es immer noch auch finden mag
Google mal nach HSTS, vielleicht liegt da der Hase im Pfeffer
Verschlüsselung sollte halt überall aktiviert und eben Standard sein, auch im Heimnetz. Du als versierter Nutzer weißt vermutlich was alles bei dir im Heimnetz abgeht. Der DAU weiß es aber nicht. Zu oft werden solche internen Dienste dann aber auch irgendwann ins Internet gehangen und HTTPS? Dieses neumodische Zeug! Brauch ich das überhaupt? Geht doch auch so. Kommt maximal auf die Todo.
Klar sind self-signed Certs im Heimnetz maximal nervig da man ja gleich noch eine CA betreiben sollte und den Geräten bekannt machen muss hilft dann auch nicht weiter.
Aber wir haben nicht mehr 1990 wo das alles einfach nur funktionieren muss sondern 2023 wo Verschlüsselung einfach immer mit dabei sein sollte. Sicherheit ist nie bequem.
So einfach ist das nicht. Ohne Domain kannst du nur selbst signierte zertifikate machen. Da meckert Firefox auch gleich wieder und der Button für die Ausnahmeregelung ist schwer zu finden und missverständlich beschrieben.
Doch eigentlich schon. Denn du kannst dir im Heimnetz einfach eine Domain ausdenken, eine CA aufsetzen diese im Firefox importieren und sich nicht mehr über Zertifikatswarnungen oder HTTPS redirect ärgern. Das geht dann einfach.
Sollte es nicht möglich sein, einen Hostname auf Ursprung (LAN/WAN) zu prüfen?
Das ist für Firefox denke ich out-of-scope und ist halt eigentlich etwas, das nur den router interessieren sollte.
Kann dein Problem auch nicht wirklich reproduzieren, meistens reicht es explizit
http://*
anzugeben oder eben den http Port hinter die Adresse zu hängen. Bei self-signed Zertifikaten muss ich das nur einmal akzeptieren und jeder weitere Besuch danach läuft normal ab. Habe glaube ich auch nie iwas darüber inabout:config
ändern müssen.Finde ich schwierig, über “out-of-scope” kann man streiten. Wenn sie nicht validieren (wollen), ob sie überhaupt zu HTTPS wechseln können/sollten, warum machen sie es dann? Das wirkt ein wenig so, wie den Regenschirm zu öffnen, ohne nach oben zu sehen, ob es überhaupt regnet.
Schwierig wird es für DAUs, die sich für teuer Geld ein Gerät für das Intranet kaufen und das gar kein HTTPS anbietet. Darüber kann man noch viel mehr streiten, aber diese Szenarien gibt es eben auch
Finde ich schwierig, über “out-of-scope” kann man streiten.
Firefox wird ja nicht nur in Standard Heimnetzen verwendet. Von einem „sicheren“ Browser würde ich auf jeden Fall nicht erwarten, sich auf einen redirect im target host zu verlassen.
Schwierig wird es für DAUs, die sich für teuer Geld ein Gerät für das Intranet kaufen und das gar kein HTTPS anbietet. Darüber kann man noch viel mehr streiten, aber diese Szenarien gibt es eben auch
Ich denke, es geht genau darum, DAUs zu schützen. Wenn das Gerät nicht mindestens self-signed Zertifkate ausstellen kann, ist das Gerät halt heutzutage unbrauchbar. Sobald da mehrere Geräte im Netzwerk hängen (gerade iwelche Smart Appliances oder sowas) wird eine Nutzung ohne https fahrlässig. Da finde ich den “opt-out” von https redirect, für Leute die wissen was sie tun, doch um einiges sinnvoller.
Ahso, den vorherigen Text hatte ich ja entfernt: Mein Firefox hat eine Option, wo ich auswählen kann, wo HTTPS only aktiviert sein soll. Überall, nur in privaten Fenstern oder komplett aus.
Edit: Hat sich erledigt, hab das “Firefox Android” irgendwie überlesen.
Edit2: Mein Firefox Android auf meinem Handy hat die Option aber auch. (so, genug rumeditiert)
Für die Bearbeitungen würde ich Dir gern gerade noch einen zweiten Vote geben :D
Das HTTPS-Only habe ich auch bei Android deaktiviert, aber das scheint mal so und mal so zu funktionieren, Caches natürlich alle gelöscht. Ich komm nicht drum herum und steige in die nächste Liga auf: Stress mit Firefox, weil es selbst signiert ist und keine Zertifizierungsstelle hat
Ich nutze einfach ein Wildcard Zertifikat, Was ich mir mit letsencrypt generieren lassen hab. Mit DNS challenges muss der Server auch nicht von draußen erreichbar sein. Theoretisch musst du dir auch keine Domain zulegen. Mit duckdns.org Subdomains funktioniert das ganze auch Recht simpel.
In dem Szenario meinst Du eine Webseite nach “draußen” verfügbar machen? Da ist es mir nachvollziehbar, wenn nicht sogar zwingend erforderlich. Aber bei mir geht es tatsächlich nur um eine Webseite, die ich im eigenen Netz hinter dem Router hoste, mit der Außenwelt hat sie nichts am Hut und das wird auch so bleiben
Wenn man klassisch bei letsencrypt Zertifikate beantragt wird überprüft, ob der Server, der das Zertifikat beantragt über diese Domain erreichbar ist.
Mit der anderen Methode (Dns Challenge) ist dies nicht notwendig. Sofern du normale Domains für dein Heimnetz verwendest kannst du dir so also gültige SSL Zertifikate generieren, die nur im Heimnetz verwendet werden sollen.
Das klingt spannend, da lese ich mich mal ein, danke!
Auf Android verwende Fennec – es geht um Firefox mit weniger Telemetrie und wie bei Firefox Nightly bekommst du Zugang zu Debug-Features wie:
- alle Add-ons (die mit ihren Pop-Ups funktionieren aber natürlich schlimmer)
- about:config
aber ohne tägliche Updates zu einer potenziell gebrochene Version. Funktionen wie Synchronisierung mit Mozilla-Konto sind geblieben.
Höh? Bei mir hab ich im Firefox das genaue Gegenteil als Problem, Firefox defaulted immer auf HTTP. Mein Arbeitgeber hat aber irgendeinen scheiß Webserver auf jedem Rechner installert der auf Port 80 läuft. In meiner WSL habe ich einen Kubernetes Server mit KinD laufen, auf dem alles auf Port 443 läuft, welcher auch mit Port-Forwarding auf meinem Windows-Host eingebunden ist. Wenn ich jetzt auf localhost zugreife, komm ich nur auf den scheiß Webserver vom AG und muss manuell https:// eintippen um auf meine Kubernetes-Instanz zu kommen
Edit: wie viele andere hier auch hab ich das Android überlesen. Ist auch sehr im Text versteckt, solltest du vielleicht präsenter erwähnen dass es sich nur um ein mobiles Problem bei dir handelt
Thema self signed Zertifikate: Kennst du da zufällig nen guten Guide um sowas einzurichten? Ich habe einige Anwendung lokal in meinem Heimnetz laufen die ich gerne über https erreichen möchte
Ich habe einen Apache2 mit CodeIgniter laufen. Ich habe erst mal nach “Apache2 SSL self signed” gesucht, hab aber dann mit einem der Beiträge von How to Geek die eigenartige Warnung im Log bekommen
[ssl:warn] [pid 1060] AH01906: localhost:443:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
Das Problem ist dabei wohl, dass OpenSSL bei den meisten Tutorials CRS oder root-CA-ähnliche Zertifikate ausstellt (siehe StackOverflow)
Hab das DH-Zeug von HowToGeek behalten und ein neues Zertifikat mit dem aus StackOverflow gemacht. Dann noch bisschen an der .htaccess herum schrauben müssen und das Zertifikat für Android exportieren, aber jetzt ist (vorerst) Ruhe.
Also ich nutze caddy als reverse proxy
Löst nicht das Problem, dass man dann allen lokalen Browsern/Geräten die eigene CA bzw zumindest das eigene RootCrt verklickern muss.
Und nein, Let’s Encrypt kommt für nichtöffentliche Adressen für mich nicht in Frage. (Schon allein, weil ich die Domains, die ich lokal nutze, gar nicht registrieren könnte.)
Eine eigene CA zu installieren ist aber auch kein großes Ding, man muss nur dran denken die dahinterliegenden Zertifikate regelmäßig zu erneuern. Ist eigentlich auch das sinnvollste fürs Heimnetz ne eigene CA anzulegen und dann auf allen Geräten von der CA signierte Zertifikate zu hinterlegen
Kosten/Nutzen. “Sicherheit” gibt es immer nur im Kontext. Und in meinem Kontext spielt es einfach keine Rolle, ob man den Traffic sniffen kann oder nicht.
Eine CA richtig zu betreiben ist auch alles andere als trivial. Denn wenn jemand an dein RootCA kommt, bist du noch mehr am Arsch, weil du dann auch noch glaubst die Verbindung wäre sicher.
Was spricht denn gegen letsencrypt? Mit DNS challenges kommt man da problemlos an gültige Zertifikate, ohne einen Webserver mit Verbindung zur Außenwelt zu betreiben.
- Ich brauch extra eine Domain dafür
- kostet Geld
- kann nicht beliebig jede TLD nehmen auf die ich Bock hab
- meine Domains (! nicht die Inhalte !) sind öffentlich einsehbar
Du kannst ja, auch ne Subdomain von duckdns.org oder so nehmen. Die wäre zwar kostenlos, aber halt sehr sperrig.
Ich sehe nicht das Problem, wenn einsehbar ist, dass server.heimnetz.de auf 192.168.0.69 mit einem A record zeigt. Außerdem müsstest du das ja nichtmal festlegen, wenn du eh einen privaten DNS Server betreibst.
Das mit der begrenzten tld Auswahl ist wirklich ein Luxusproblem
Und dennoch ist das alles eine Lösung für ein Problem, das ich nicht habe. Ergo ist es haufenweise Aufwand für nichts. Eigentlich sogar im Gegenteil: es erschwert mein Leben, wenn ich selbst mal in den Traffic schauen will um was zu debuggen.
- Ich brauch extra eine Domain dafür
Klar, Möglichkeiten gib es, aber wenn ich ein privates Projekt starten möchte, möchte ich mich doch nicht erst mal mit einer riesigen Wand an Dev-Op-Themen beschäftigen müssen sondern einfach vor mich her programmieren, mit der möglichst unaufwändigsten Basis, bis es “etwas Ernstes” wird?
Kommt natürlich drauf an wie deine restliche Server-landschaft aussieht. Wenn du eh andere Server/ Programme am laufen hast, ergibt es mMn sowieso Sinn einen Reverse Proxy aufzusetzen.
Caddy funktioniert tatsächlich auch relativ simpel mit einer einfach zu verstehenden Config-Datei. Kann zudem direkt als Webserver oder eben lediglich als Reverse Proxy benutzt werden.
Hatte letztens das gleiche Problem beim Einrichten von einem Balkonkraftwerk-Wechselrichter. Damit der nichts mit dem lokalen Netz machen kann hab ich dazu noch ein Gastnetz in der Fritzbox und einen WiFi repeater eingerichtet.
Hatte dabei natürlich gerade nur ein Android 13 Gerät zur Hand.
Erst der Krampf Android klarzumachen, dass ich weiterhin mit dem Default Accesspoint Netz des Repeaters oder des Wechselrichters verbunden sein und BLEIBEN will, auch wenn es keinen Internetzugriff bietet.
Und dann obendrein Firefox, das aus jedem http ein https gemacht hat.
Du kannst deine eigene ca erstellen und entsprechend in Android hinterlegen. Dann kannste selber Zertifikate für beliebige Domains erstellen. Z.B. auch eine *.local wildcard oder sowas. Ich hatte dafür mal xca benutzt um das über eine GUI machen zu können: https://hohnstaedt.de/xca/