«HTTP» auf HTTPS umleiten

du schreibst aber auch gar nirgends was für einen Webserver du einsetzt (Apache2, Nginx, IIS, ..., oder sogar einen Proxy/Loadbalancer wie haproxy). Das is halt bei jedem Programm anders zu konfigurieren, es gibt keine Universallösung)
 
Hallo,

Ich denke mal es geht hier um folgendes Problem: link
Kurz gesagt verursachen in der Webseite nach geladene Inhalte per HTTP in den aktuellen Browsern das gelbe Ausrufezeichen, selbst mit erzwungenen HTTP redirect.

Leider ist mir selbst hierzu auch keine Lösung bekannt außer alle benutzen Links von http auf https um zu schreiben.

Gruß,
Tom
 
Auch darum geht es nicht. [Das Problem haben wir auch, aber auch eine Begründung die wir angreifen können.]

Es geht um Dumme Technik (die ich nun genauer definiert habe - die «Server»), Ratgeber (ob auf Papier oder über die Mattscheibe), User die das für voll nehmen und die Unfähigkeit »unterhalb« einer Domain alles als HTTPS zurückzugeben (worauf der Dumme Browser überhaupt reagiert) um dem besagten User Grün melden zu können.

Du als Betreiber stehst immer blöd da wenn das Grüne Schlösschen nicht kommt - der User aber nicht kapiert , dass bei faulem Input fauler Output kommt. Und exakt hier muss die Technik ihren Job tun!
Tut sie nur nicht…

CN8
 
ich hab ca 10 Docker Container laufen (u.A. mit Webinterface für die Config, aber auch einen normalen Nginx Container als Webserver, alle Container auf lustigen Ports wie 8273, 2839, 1923, usw.), davor hab ich einen haproxy geschaltet, in der Firewall Port 80 und 443 freigeschalten und in der Config folgendes stehen:
Code:
frontend http
        bind *:80
        bind :::80
        redirect scheme https code 301 if !{ ssl_fc }

frontend https
        bind *:443 ssl crt /etc/haproxy/certs/*.mydomain.com.pem alpn h2,http/1.1
        bind :::443 ssl crt /etc/haproxy/certs/*.mydomain.com.pem alpn h2,http/1.1

und egal was die Leute eingeben, es wird immer SSL verschlüsselt, denn das einzige was auf Port 80 passiert ist eine Zwangsumelitung auf HTTPS (Port 443). Beispiele:

mydomain.com -> https://mydomain.com
http://mydomain.com -> https://mydomain.com
pic.mydomain.com -> https://pic.mydomain.com
mydomain.com/config -> https://mydomain.com/config

zuvor hatte ich genau das selbe mit einem Nginx konfiguriert. Auf einem weiteren Webserver hab ich Apache2, und selbst dort lässt sich ein SSL Zertifikat spielend einfach einbinden.

Ich lese deinen Text immer so allgemein, und nicht konkret für einen Server. Vielleicht ja das berühmte XY Problem? zeig uns doch deine Config (und damit meine ich: Betriebssystem inkl Version, Webserver inkl Version, Configdatei, etc), dann können wir vielleicht sehen woran es liegt dass es nicht geht. (nur für IIS muss ich persönlich leider passen, Apache, Nginx und haproxy kann ich weiterhelfen)

Zum Problem was tomhans beschreibt: man kann in den HTTP Headern verhindern dass Fremdquellen ohne Verschlüsselung geladen werden, dann werden sie zwar nicht angezeigt, aber auch kein unverschlüsselter Traffic generiert.
 
Zuletzt bearbeitet:
Doch, tut sie. Man muss es ihr nur sagen / entsprechend konfigurieren.
Na, dann raus damit! Was muss ich tun? Ich bin gespannt!

Ich lese deinen Text immer so allgemein, und nicht konkret für einen Server.
Eben ganu da ist es: eine allgemeine Frage nach einem allgemein [UNIX/WIN] gültigen Konzept - und kein komplexer Spezialfall der z.B. trotz Einstellungen nicht pariert.

CN8
 
Wurde dir bereits erklärt die basieren alle auf dem gleichen Konzept:

1. 30X Status Code senden
2. Einen "Location" Header an den Client senden mit der Ziel URL

Das kannst du entweder vom Server oder von einem Script senden lassen. Aber die benutzen alle dieses Konzept.

Eine Garantie, dass das überall funktioniert kann dir keiner geben weil es immer Spezis gibt die ihre Browser kaputt konfigurieren.
 
Ich bin ehrlich gesagt überrascht, dass das Thema immernoch aktiv ist.

Wurden die beschriebenen Methoden denn mal ausprobiert? Ich wäre extrem überrascht, wenn die nicht funktionieren würden, nicht für umsonst sind die in jedem halbwegs brauchbaren Guide vertreten.

Selbst mit uralten Bookmarks und Deeplinks ist es doch einfach:
- Oma Helga kramt in IE Ihren 20 Jahre alten Bookmark raus
- IE fragt beim Server an "ey kollege schieb ma Daten rüber"
- Server antwortet IE "ey Alter was du suchst existiert nicht mehr, geh woanders hin" (302/308 + Location mit HTTPS)
- IE5 fragt die neue Location über HTTPS an
- Server antwortet über HTTPS

Ich seh das Problem nicht.

Dasselbe passiert auch bei eingebetteten Inhalten (z.B. Grafiken) und Links auf alten Webseiten oder Blogs.

cumulonimbus8 schrieb:
Keine Weiterleitung greift wenn das HTTP in vorhandenen (alten) Files steht - und Browser »darauf abfahren« danach zu suchen.
Doch. Genau das ist Sinn und Zweck eines 302 und Location Headers. Was meinst du wie das Wechseln eines CMS oder einer Forensoftware (siehe Computerbase) funktioniert? Dort werden auch nur Weiterleitungen von der alten auf die neue URL mittels 302 angelegt, schließlich kann man beim Wechsel der Software schlecht alle Links im Internet ändern die mal irgendwo auf einen Thread verweisen.

Die beschriebenen Methoden sind auch zum Beispiel in HTML5Boilerplate enthalten:
https://github.com/h5bp/server-configs-apache/blob/master/dist/.htaccess#L349
 
Zuletzt bearbeitet:
Manchmal kann man sich das Leben auch selber umständlich gestalten.

Für Apache (auch für Deeplinks und Query-Parameter)
Apache-Konfiguration:
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTPS}        off
    RewriteRule ^/?(.*)         https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
 
Das wurde ja schon mehrfach genannt, er meinte ja aber dass das nicht funktionieren würde.
 
Man darf das natürlich nicht mit Edding auf dem Monitor malen, dann funktioniert das auch ;)
 
  • Gefällt mir
Reaktionen: Mihawk90
1. 30X Status Code senden
2. Einen "Location" Header an den Client senden mit der Ziel URL
Tja… und… Wer oder was macht das wie und wo?
Und «Client»; welcher Client wessen?

- Server antwortet über HTTPS
Wenn der User das nicht sieht dann tut der Server für ihn das nicht. Auch wenn alles sicher ist.

Doch. Genau das ist Sinn und Zweck eines 302 und Location Headers.
Dann bau das doch mal in einen Deep-Link ein den ein user eintippt und der auf Inhalte verweist die nicht von dort weg können (weil sie mehr als eine simple statische Website sind).

Das wurde ja schon mehrfach genannt, er meinte ja aber dass das nicht funktionieren würde.
Weil er z.B. keinen Apachen hat..?!

Ein Server als eine Art Betriebssystem sollte erkennen wenn auf ihn zugegriffen wird. Nun müsste er etwas zurückmelden das Browser veranlasst (analog dieser bewussten Weiterleitung) dem User eine Ansage zu machen, dass diese Verbindung gesichert wurde und ist. Wenn man so will: dem User soll keine Blauer sondern mehr einn Gründer Dunst vorgemacht werden.

CN8
 
cumulonimbus8 schrieb:
Tja… und… Wer oder was macht das wie und wo?
Wurde mehrfach genannt. Entweder via Server config oder via script, deine Entscheidung und situationsabhängig.

cumulonimbus8 schrieb:
Und «Client»; welcher Client wessen?
... Wer soll wohl der Client sein wenn der Server der Server is?

cumulonimbus8 schrieb:
Wenn der User das nicht sieht dann tut der Server für ihn das nicht. Auch wenn alles sicher ist.
... ??? Vielleicht solltest du auch die Zeilen darüber lesen? Der User muss dafür nichts "sehen".

cumulonimbus8 schrieb:
Dann bau das doch mal in einen Deep-Link ein den ein user eintippt und der auf Inhalte verweist die nicht von dort weg können (weil sie mehr als eine simple statische Website sind).
Es wird nicht in den Link eingebaut den der Nutzer klickt oder gespeichert hat, das ist der Punkt. Und ob das statischer Content ist oder dynamisch spielt dabei gar keine Rolle.
Mal so als Denkanstoß: Tipp mal http://computerbase.de ein und sag mir wo du landest.

cumulonimbus8 schrieb:
Weil er z.B. keinen Apachen hat..?!
Entscheid dich ob du Server spezifische Lösungen willst oder nicht. Einerseits meinst du du willst eine allgemeine Information, andererseits möchtest du offenbar was für deinen Server wenn du deinen Softwarestack noch nichtmal nennst.
Ein wenig Eigenarbeit sollten wir erwarten können, das vorgehen ist überall das gleiche. Wie die Konfiguration umzusetzen ist muss man im Zweifel eben mal selbst suchen, das ist nunmal bei jeder software anders.

cumulonimbus8 schrieb:
Ein Server als eine Art Betriebssystem sollte erkennen wenn auf ihn zugegriffen wird.
Das Betriebssystem auf dem Server hat mit der Konfiguration des Webservers 0 zu tun.

cumulonimbus8 schrieb:
Nun müsste er etwas zurückmelden das Browser veranlasst (analog dieser bewussten Weiterleitung) dem User eine Ansage zu machen, dass diese Verbindung gesichert wurde und ist
Das tut er nach der Umleitung auf HTTPS. Wie das funktioniert wurde jetzt schon mehrfach geschrieben.

Aber auf die wichtigste Frage bist du ja geschickterweise nicht eingegangen:
Hast du es schon mal probiert?
 
Zuletzt bearbeitet:
Mit grünen und blauen Dunst können wir leider nicht helfen. Eine Umleitung auf echtes https, das mit dem passenden Zertifikat trotz http-Aufruf echte Verschlüsselung erzeugt (und nebenbei ein grünes Schlösschen zaubert) haben wir versucht dir anzubieten, aber wir erfahren leider nicht an welcher Stelle die mehrfach beschriebenen, teils sehr konkreten Lösungen nicht funktionieren (bis hin zum passenden 1&1 Hilfetext - wenn der nicht geht dann sag doch einfach mal WAS daran nicht geht oder kontaktiere einfach deinen Anbieter).

cumulonimbus8 schrieb:
Weil er z.B. keinen Apachen hat..?!
Ja was hadder denn? Alles an Informationen was wir zwischen den indirekten Beschwerden über nervige User hindurchlesen konnten, weist zum einen auf ein 1&1 Webhosting-Angebot hin. Da ich einen Kunden habe der das auch nutzt konnte ich mal das Setup checken und dort funktioniert deine (vermutlich) gewünschte Gründunst-Funktion mit beschriebener Lösung problemlos. Heißt ich kann http://kundendomain.de/wp-content/uploads/2018/04/2014-12-09-1024x768.jpg eintippen, werde umgeleitet und der Browser lädt völlig automatisch das Bild (oder eine html-Seite, oder eine bestimmte Seite im PHP-Wordpress) via https. Wenn du eben nicht dieses (durchaus übliche) 1&1-Hosting-Angebot hast, dann bitte sag genau welches. Weiterhin wissen wir nur von Strato-vServern mit Windows, aber nicht welcher Web-Server zum Einsatz kommt. Trotzdem hat jemand passende Suchbegriffe und Stichworte genannt, die schnell zur am wahrscheinlichsten passenden IIS-Webserver-Konfiguration führt. FALLS Interesse an einer Lösungsfindung bestand/besteht, bitte konkreter werden, ansonsten gerne weiter über naive User lamentieren und darüber philosophieren, mit was für Clients ein Webserver wohl reden könnte.
 
  • Gefällt mir
Reaktionen: Mihawk90
ich glaub ich habs, hier, so würd ichs meiner Freundin erklären:

User denkt: “Heute surfe ich auf Google“

User tippt in seinem Browser „google.de“ und sagt ihm somit: „Zeig mir sofort diese Webseite an, aber dalli dalli“

Browser denkt sich: „Oh man, da hat er mal wieder das wichtigste vergessen, aber da ich so ein schlauer Browser bin vervollständige ich mal deine Anfrage auf http://google.de, und verzeihe meinem User

Browser nimmt seine Arbeit auf, sucht im Internet (bei seinem DNS) nach dem Namen google.de, findet seine IP Adresse und denkt sich: „Toll, ich kann die Webseitendaten anfragen“

Browser stellt die Anfrage: „Ok, Server hinter http://google.de, gib mir deine Daten“ (Port 80)

Server bekommt eine Anfrage auf Port 80 und denkt sich: „Oh man, schon wieder so einer der im unsicheren Netz unterwegs ist, was für ne Lusche“. Aber weil er so freundlich ist, sagt der Server: „Ätschi bätsch, hier liegt nichts mehr, das Zeugs wurde dauerhaft verschoben (301), und ich ich bin so nett und gib dir die neue Adresse (https://google.de)“

Browser bekommt die Nachricht und denkt sich: „oh shit, war wohl nichts, ok, ich stelle mal besser eine Anfrage an die neue Adresse https://google.de

Browser stellt die Anfrage: „Ok, Server hinter https://google.de, gib mir deine Daten“ (Port 443)

Server bekommt eine Anfrage auf Port 443 und denkt sich: „Boah, wasn sicherer Browser, klar hab ich deine Daten, hier sind sie, und warte, nicht so schnell, ich geb dir vorher noch ein gültiges Zertifikat, sonst glaubt uns ja keiner dass das sicher ist“

Browser bekommt die Daten und denkt sich: „Yeah, ein Zertifikat, geil, das überprüfe ich doch gleich mal ... (denk) ... puh, und auch noch die Daten, endlich hab ich was, ok, jetzt noch render uns so. BÄM!“

User denkt: „Tolle Webseite hab ich hier aufgerufen, das ging ja ruck zuck, und ein grünes Schlösschen ist auch noch da, total sicher ey, dieses google.de“.

(wird ergänzt wenn ich Fehler finde, und HTTP Strict Transport Security hab ich mal weggelassen, da lernt der Browser das irgendwie)



ob jetzt http://google.de http://computerbase.de https://www.computerbase.de/forum/threads/nach-oreo-update-probleme-mit-s7-edge-wer-hat-erfahrungen.1812721/#post-21512846 oder http://www.mydealz.de/gutscheine aufgerufen wird ist völlig schnuppe, der Server gibt dem Browser einfach die richtige Adresse (mit https anstatt http) und der ruft die dann auf)

da man den Browser den Users nicht bestimmen kann, muss man am Server ansetzten. Diesen muss man so schlau machen ihm jedes mal die richtige Adresse zu nennen die der Browser dann aufrufen kann.

(und jetzt bekomm ich bestimmt einen auf die Mütze)
 
Zuletzt bearbeitet:
LieberNetterFlo schrieb:
und jetzt bekomm ich bestimmt einen auf die Mütze
Nein, denn anscheinend hast du's jetzt verstanden. Der Browser spielt gar keine Rolle weil der Server auf die ursprüngliche http Anfrage gar keine Antwort mehr gibt die echten content enthält, sondern eben nur die Umleitung auf die korrekte Adresse. Ob der Browser die Umleitung dann beachtet und https anfragt ist ne andere Geschichte, aber mir wäre keiner bekannt der das nicht tut. Und selbst wenn wieder nur http angefragt wird kommt wieder nur die gleiche Antwort zurück.

Wie gesagt die spezifische Lösung ist immer fallabhängig, es gibt kein Allheilmittel. Allerdings würde ich meinen dass 90% der Fälle mit der serverconfig gelöst werden können.
Wie die dann auszusehen hat hängt halt vom Server ab.

Ich wollte gestern abend noch schreiben dass es vermutlich am Verständnis einer http Weiterleitung scheitert und anscheinend war dem auch so ;)
 
Wurde mehrfach genannt. Entweder via Server config oder via script, deine Entscheidung und situationsabhängig.
Ja, was muss denn in diese Config und Skripte die sich bitte wo befinden? Das muss als Misterstruktur sicherlich anzugeben sein.

Wenn eine Weiterleitung auf «googel.de» zu «https://google.com/de» programmiert ist dann wird diese arbeiten.
Wenn ich aber «google.de/scherzfrage» aufriefe muss auch da eine Weiteleitung programmiert sein, gäbe es dort aber eine «google.de/scherzfrage/bild.jpg» wird der Server mich nicht weiterleiten.

Und an genau diesem Punkt scheitert es - und es ist offensichtlich auch nicht lösbar. «https://«google.de/scherzfrage/bild.jpg» würde aber das Schlösschen hervorholen.
Diese Intelligenz erhoffte ich mir von Servern - aber es gibt sie nicht.

Damit ist der Fall für mich erledigt.

CN8
 
cumulonimbus8 schrieb:
Und an genau diesem Punkt scheitert es - und es ist offensichtlich auch nicht lösbar.
Echt jetzt? :D:lol:
Kommt mir vor als hätte man jemandem 4 verständliche Tutorials gegeben zum Thema "Desktop-Hintergrund in Windows ändern" und anschließend sagt er, okay, offensichtlich geht das nicht. Zugegeben ist der Fall minimal komplexer, allerdings wussten wir auch die meiste Zeit nicht ob Windows- oder Linux-Desktop.

cumulonimbus8 schrieb:
Damit ist der Fall für mich erledigt.
Einverstanden, denn ich bin auch erledigt. :schluck:
 
cumulonimbus8 schrieb:
Und an genau diesem Punkt scheitert es - und es ist offensichtlich auch nicht lösbar.
Hääää:freak:
Du hast doch 2 posts drüber gerade noch geschrieben wie es funktioniert und jetzt ist es unlösbar? O.o

Die entsprechenden Konfigurationen wurden doch sogar schon für verschiedene Webserver genannt. Klar machen die das nicht alleine weil es nicht überall sinnvoll ist (und man Standardkonfiguration nicht mal eben so ändert). Man muss.es.dem Webserver halt beibringen.
 
@cumulonimbus8 Ich dachte ja nun erst du trollst. Habe aber per Zufall deinen anderen Thread zum selben Problem gefunden. Dort gibst du ja zumindest einige Auskünfte die du hier vehement verweigerst.

Deine Weiterleitungen schienen ja zu funktionieren. Dein Problem ist wohl, dass du HTML auslieferst, dass noch http:// URLs enthält. Bei solchen Umstellungen macht man es tatsächlich so, dass man hier alle Links entsprechend in der Quelle ersetzt. Normalerweise reicht hier ein Massen Suchen & Ersetzen im Projekt aus.

Es gibt auch Möglichkeiten das bei jeder Auslieferung zu machen, aber die verwendet man eigentlich nur wenn man keinen Zugriff auf die Quellen hat wie bei Reverse-Proxys. Falls du die wirklich nutzen willst, wovon ich absolut abrate, muss dir das aber jemand beantworten der sich mit IIS / ASP auskennt.
 
Zurück
Oben