Erzwingen Sie eine Webadresse, um HTTPS zu durchlaufen

4782
dancramer

Bei meiner Arbeit ist http://twitter.com blockiert, aber https: // twitter nicht. Gibt es eine Möglichkeit, dass alle Programme / Browser auf diese URL über das HTTPS-Protokoll anstelle von HTTP zugreifen?

Dies bezieht sich insbesondere auf Drittanbieter-Clients, die auf die Site zugreifen müssen, aber in der Regel hart in HTTP codiert sind und keine Option zum Ändern haben.

UPDATE: Ich habe versucht, ein Fiddler-Skript zu erstellen (siehe unten), konnte es jedoch nicht ordnungsgemäß ausführen. Eine Antwort mit dem Skript wäre sehr hilfreich oder eine andere Methode, die ausschließlich aus Zugriff besteht.

6
Denken Sie daran, dass nicht alle Websites mit https funktionieren (obwohl sie dies sollten). Josh Hunt vor 14 Jahren 0
@joshhunt - gut zu bedenken. Dies würde speziell für Websites gelten, von denen ich weiß, dass das https funktioniert, das http jedoch nicht. dancramer vor 14 Jahren 0
Verfügen Sie über Administratorrechte auf Ihrem Arbeitscomputer? Und welche Windows-Version verwenden Sie? Arjan vor 14 Jahren 0
Win XP mit Administratorzugang dancramer vor 14 Jahren 0
Ok, das Ändern der `hosts'-Datei sollte möglich sein, obwohl es sich etwas unangenehm anfühlt. Wenn Sie derzeit keinen Firmen-Proxy verwenden müssen (und es Ihnen nichts ausmacht, einige Fehler zu bezahlen), ist die Verwendung von Charles Web Debugging Proxy, wie Matthew es empfohlen hat, ebenfalls in Ordnung, wenn Ihre Twitter-Anwendungen solche Proxy-Einstellungen tatsächlich berücksichtigen. (Und es könnte bevorzugt werden, da die Zertifikatskette wahrscheinlich nicht durch die explizite Verwendung von "https" unterbrochen wird), obwohl DeleGate wahrscheinlich auch als * beide * Man-in-the-Middle-HTTP-zu-HTTPS-Gateways * und * ausgeführt werden kann * ein normaler Proxy für Anwendungen, die ihn verwenden.) Arjan vor 14 Jahren 0

9 Antworten auf die Frage

8
Arjan

Ich frage mich, ob alle Anwendungen von Drittanbietern tatsächlich Proxy-Einstellungen berücksichtigen. Oder wenn das Ändern der systemweiten Proxy-Einstellungen andere Anwendungen beeinträchtigen kann. (Wenn beispielsweise der Proxy des Unternehmens für den Internetzugang erforderlich ist, kann er nicht geändert werden, um den Datenverkehr umzuleiten twitter.com.) Wenn die Anwendung HTTPS nicht verwendet, kann sie kein Man-in-the-Middle finden. Also: Legen Sie einen Man-in-the-Middle- twitter.comPort für Port 80 mit DeleGate an .

Die folgenden Schritte wurden unter Mac OS X 10.6 und Windows XP mit Konten mit vollständigen Administratorrechten getestet.

  1. Laden Sie DeleGate herunter . Lassen Sie sich nicht von der Homepage der 90er Jahre täuschen: Das Programm bleibt erhalten.

  2. Teilen Sie DeleGate mit, dass alle lokalen Anforderungen an Port 80 (und 443) an den HTTPS-Server basierend auf dem Wert des Host-Headers in der HTTP-Anforderung weitergeleitet werden sollen. Wie bei einem Mac unter Intel (wo sudoprivilegierte Ports unter 1024 erforderlich sind):

    sudo ./macosxi-dg -v -P80,443 \ SERVER=https \ RELAY=vhost \ RESOLV=cache,dns \ STLS=-fcl,fsv \ ADMIN=a@b.c 

    Für Windows, wenn entpackt zu c:\:

    cd c:\dg9_9_4\bin dg9_9_4.exe -v -P80,443 SERVER=https RELAY=vhost RESOLV=cache,dns STLS=-fcl,fsv ADMIN=a@b.c 

    Wenn Sie den Proxy Ihres Unternehmens für den Internetzugang verwenden möchten, verwendet DeleGate diesen gerne, wenn Sie PROXY=proxy.example.com:8080der Befehlszeile etwas hinzufügen .

  3. Fügen Sie in Ihrer /etc/hostsDatei ( c:\windows\system32\drivers\etc\hostsunter Windows XP; Informationen zu Speicherorten in anderen Betriebssystemen von Wikipedia ) die folgende Zeile hinzu, um alle Anfragen twitter.coman Ihren eigenen Computer zu richten . Beachten Sie, dass bei der Zuordnung von Domänenname zu IP-Adresse das Protokoll nicht berücksichtigt wird. Also: Dies wird nicht nur für HTTP verwendet, sondern auch für HTTPS (und alles andere wie Befehle wie ping).

    127.0.0.1 twitter.com 
  4. Stellen Sie sicher, dass Ihr Browser nicht für die Verwendung eines Proxyservers oder twitter.comals Ausnahme festgelegt ist. Nur für den Fall, dass Ihr Browser die IP-Adresse von Twitter zwischengespeichert hat, möchten Sie sie möglicherweise neu starten.

  5. Jetzt bekommt http://twitter.com Sie (und alle Ihre Anwendungen) https://twitter.com.


Die Ausgabe zeigt, dass die HTTPS-Site tatsächlich angefordert wird von https://twitter.com:

REQUEST - GET / HTTP/1.1 REQUEST = https://twitter.com:443/ GET / HTTP/1.1 [..] ConnectToServer connected [16]  ## SSLway -- TLSxSNI: sent ru=0 ty=0 nm=localhost ## SSLway ## 0.459622 connected/accepted ## SSLway server's cert. =  **subject / C=US/ O=twitter.com/ OU=GT09721236/ OU=See www.rapidssl.com/resources/cps (c)09/ OU=Domain Control Validated - RapidSSL(R)/ CN=twitter.com **issuer / C=US/ O=Equifax Secure Inc./ CN=Equifax Secure Global eBusiness CA-1 


Bei Verwendung MOUNT="/* https://twitter.com/*"statt RELAY=vhostdann http://localhostwürde man sogar eine geben https://twitter.com:

Twitter through DeleGate


Wenn explizit mit HTTPS anfordert https://twitter.com, dann die vertrauenswürdige Zertifikatskette ist gebrochen: ein HTTPS-aware applicate wird der Mann-in-the-Middle - Angriff entdecken, und wird scheitern, wenn es nicht für Ihre Erlaubnis bitten können, um fortzufahren!

Man-in-the-middle


Entfernen Sie nach dem Test den Parameter, um ihn als Dienst unter Windows auszuführen -v. Dadurch wird das Programm als Dienst installiert. Es wird dann im Hintergrund ausgeführt und Sie werden gefragt, ob Sie es beim Start ausführen möchten:

Trying to start as a service [DeleGate Server -P80,443] ... Set Automatic Start on System Startup ? [y] / n : 

Nachdem Sie den obigen Befehl ohne -vParameter ausgeführt haben, finden Sie weitere Informationen unter Manuelles Starten oder Stoppen von DeleGate unter Systemsteuerung »Verwaltung» Dienste. Beachten Sie, dass sich dieser Dienst auf den Ort bezieht, von dem Sie das dg9_9_4.exeProgramm ursprünglich gestartet haben . Sie sollten das Programm also nicht löschen oder verschieben. entpacken Sie den Download, um beispielsweise c:\dg9_9_4einen Verweis auf einige Downloads-Verzeichnisse zu vermeiden, die Sie möglicherweise löschen.

Um den Dienst zu entfernen, müssen Sie nur den gleichen Wert für den -PParameter angeben :

dg9_9_4.exe -P80,443 ADMIN=a@b.c [..] The service `DeleGate Server -P80,443' exists. Delete it ? [y] / n : y OK. DELETEd the previous service. Create a new service ? [y] / n : n 


Schließlich fragt man sich vielleicht, wie DeleGate die IP-Adresse von twitter.com kennt (da wir dies auf 127.0.0.1 in der hostsDatei festgelegt haben). DeleGate ruft das eigentlich selbst ab, weil RESOLV=cache,dns:

MOUNT[5]X[2] /* https://twitter.com/*  SOA got [162.143.168.in-addr.arpa][ns1.dn.net] [dnsadmin.enterprise.verio.net] 2008121001 10800 3600 604800 86400 
Tolle Antwort, Beispiele bekommen und es hat wie ein Zauber funktioniert. Danke Arjan! dancramer vor 14 Jahren 0
5
crb

Sie benötigen eine Art Proxy-Server mit einer Funktion zum Überschreiben von Regeln. Ich vermute, dass Sie, wenn keine bessere Antwort angeboten wird, eine Änderungsregel für Fiddler schreiben könnten, um dies zu tun. Fiddler-Regeln sind in JavaScript geschrieben und es gibt mehrere Beispiele online.

Bearbeiten: Bitte sehen Sie Eric Laws Antwort auf dieser Seite.

Ich denke, das wird der Weg sein, ich werde Fiddler runterladen und sehen, wie schwer es sein würde, das Redirect-Skript zu schreiben dancramer vor 14 Jahren 0
Ok, ich habe mich in gutem Glauben bemüht, dies ohne Erfolg zum Laufen zu bringen. Ich brauche ein Beispiel für das Skript, um dies wirklich in Gang zu bringen. dancramer vor 14 Jahren 1
Der Proxy-Server muss * außerhalb der Firewall * sein, wenn die Blockierung nicht auf Anwendungsebene auf Ihrem eigenen Computer erfolgt. reinierpost vor 14 Jahren 1
@reinierpost, ich würde sagen, der (zusätzliche) Proxy-Server muss * innerhalb * der Firewall sein (also: auf einer Workstation), da er HTTP in HTTPS umschreiben muss, bevor er die Firewall passieren kann. Arjan vor 14 Jahren 1
Das Fiddler-Skript ist trivial, aber das Kommentarsystem formatiert den Code in einem Kommentar neu, daher habe ich dem Skript eine zusätzliche Antwort hinzugefügt. EricLaw vor 14 Jahren 1
3
EricLaw

Die Fiddler- Regel ist ziemlich einfach. Fügen Sie in OnBeforeRequest Folgendes hinzu:

if (oSession.fullUrl.StartsWith("http://twitter.com/")) { oSession.oRequest.headers.UriScheme = "https"; } 
Nett. (Hoffentlich berücksichtigen alle Anwendungen von Drittanbietern die systemweiten Proxy-Einstellungen. Wenn Sie auch einen Firmen-Proxy verwenden müssen, um eine Verbindung zum Internet herzustellen, unterstützt Fiddler offenbar auch "Chain to Upstream Gateway Proxy" in seinen Einstellungen.) Arjan vor 14 Jahren 0
2
harrymc

Sie können jeder Zensur entkommen, indem Sie ein VPN verwenden und aus Ihrem Arbeitsnetzwerk tunneln.

Beim VPN-Tunneln wird eine logische Netzwerkverbindung eingerichtet und aufrechterhalten (die möglicherweise Zwischenhops enthält). Bei dieser Verbindung werden Pakete, die in einem bestimmten VPN-Protokollformat erstellt wurden, in einem anderen Basis- oder Trägerprotokoll gekapselt, zwischen dem VPN-Client und dem Server übertragen und schließlich auf der Empfängerseite entkapselt.

Das bedeutet, dass alle Ihre Pakete über einen Vermittler im Internet gesendet werden. Dieser Vermittler wird normalerweise nicht durch die Firewall Ihres Unternehmens blockiert. Er leitet alle Ihre Pakete an das Ziel weiter und sendet die erhaltenen Antworten an Ihren Computer zurück. Darüber hinaus stellt die VPN-Verbindung sicher, dass alle Ihre Pakete auf beide Arten verschlüsselt und vor neugierigen Blicken geschützt sind.

Sie erhalten den besten Service von kommerziellen Produkten, aber einige sind kostenlos und nicht zu schlecht. Der HTTP-Tunnel Client ist beispielsweise ein sehr gutes Produkt.

1
Matthew Lock

Es ist nicht kostenlos, aber der Charles (ein Web - Debugging - Proxy) eine Karte Remote - Funktion Einstellungen, die zur Karte gesagt werden könnte, http://twitter.comauf https://twitter.comeinfache Weise eine GUI. Sie können eine Testversion von der Website herunterladen, um zu sehen, ob sie Ihren Anforderungen entspricht.

alt text

0
Stephen

Sie könnten ein Greasemonkey- Skript mit Firefox schreiben . Hier ist einer für FriendFeed .

Edit: Skript für Twitter.

Hilft ihm nicht bei externen Kunden. crb vor 14 Jahren 1
Ah richtig. Wenn jemand es vor Ort tun möchte, können Sie das Skript hier http://userscripts.org/scripts/show/53744 herunterladen Stephen vor 14 Jahren 0
0
harrymc

Unter Firefox scheint das Add-On Force-TLS Ihr Problem zu lösen.
Zitat:

So funktioniert das:

  1. Eine Site x.com, die über HTTPS bereitgestellt wird, stellt in ihrer Antwort einen Header X-Force-TLS bereit. Der Header enthält einen Wert für max-age (wie lange wird das erzwungene TLS berücksichtigt) und optional ein includeSubDomains-Flag.
  2. Der Browser empfängt diesen Header und fügt ihn einer Force TLS-Datenbank hinzu.
  3. In der Zukunft werden alle Anforderungen an x.com so geändert, dass sie über HTTPS erfolgen, wenn sie über HTTP versucht werden, bevor die Anforderung das Netzwerk erreicht.
  4. Wenn Subdomains * .x.com über HTTP angefordert werden und das IncludeSubDomains-Flag gesetzt wurde, müssen sie auch HTTPS sein.
Eine Lösung für alle Browser ist recht komplex. Ich glaube, dass das OP eine einfache Lösung bevorzugt. harrymc vor 14 Jahren 0
Das OP benötigt keine Lösung für * jeden * Browser (man kann einfach manuell * `https` in einen Browser eingeben). Es handelt sich um Software, die nur eine Verbindung zu HTTP herstellt und bei der die URL nicht geändert werden kann. Arjan vor 14 Jahren 1
Ich glaube, er verbindet sich eher über https mit einer Seite, die http-Links enthält, die er in https konvertieren muss, da http zu dieser Site blockiert ist. harrymc vor 14 Jahren 0
Nun, er schreibt * Dies bezieht sich speziell auf Drittanbieter-Clients, die auf die Site zugreifen müssen, aber in der Regel hart in http kodiert sind, ohne dass sie geändert werden müssen. ... Arjan vor 14 Jahren 1
Vielleicht haben Sie Recht - Ich habe eine weitere Antwort hinzugefügt, die alle Programme auf dem Computer mithilfe von VPN-Tunneling anspricht. harrymc vor 14 Jahren 0
-1
user1088

Ich denke es gibt nicht = /

Jemand kann einen Weg zeigen, aber dies als Softwareentwickler zu sehen: Viele Anwendungen haben http://twitter.com hartcodiert, und da nicht nur die Adresse, sondern das Protokoll anders ist, sehe ich nicht Eine Möglichkeit, dies automatisch zu tun, ohne die Anwendung zu ändern. Einige Anwendungen funktionieren möglicherweise mit beiden, sodass Sie es konfigurieren können.

Hinweis: Webanwendungen sind hackiger als Desktopanwendungen.

EDIT: gut, crb. Ein Proxy-Server kann, abhängig von der Art und Weise, wie Twitter blockiert wird, helfen.

Da ist ein Proxy-Server praktisch :) crb vor 14 Jahren 1
-1
alpha1

Eine andere Lösung wäre vielleicht die Verwendung eines Clients wie DestroyTwitter oder TweetDeck . Diese verwenden twitter.com nicht direkt, sondern twittern und lesen eine API, die wahrscheinlich nicht blockiert ist.

Die API verwendet HTTP (und den twitter.com-Domänennamen) wie ein Browser. Wie http://twitter.com/statuses/public_timeline.xml oder http://twitter.com/statuses/user_timeline/codinghorror.xml?count=5 Arjan vor 14 Jahren 1
es hängt davon ab, wie sie blockieren. Wenn sie twitter.com blockieren, funktioniert sie. Wenn sie sie mit dem Schlüsselwort oder mit twitter.com/* blockieren, wird dies fehlschlagen. Sie haben beides an verschiedenen Stellen alpha1 vor 14 Jahren 0