Selbstgeschriebener HTTP/HTTPS-Proxy

  • Ich habe einen Proxy geschrieben, der lokal auf dem Rechner läuft und http-Anfragen (Proxy im Browser entsprechend eingestellt) einfach nur weiterleitet (weil's mich interessiert und vllt. für einen späteren Filter/Tunnel/...). Das ganze in Java, per Sockets, über den Request finde ich den Zielrechner raus und leite dorthin weiter.
    Beispiel:

    Code
    GET http://www.google.at/ HTTP/1.1


    Request wird weitergeleitet an http://www.google.at
    Läuft so weit ganz gut (http://www.orf.at, wird z.B. korrekt inkl. Bildern und so dargestellt).

    Zum Problem: Eine Anfrage per https funktioniert jedoch nicht, obwohl ich die Anfrage 1:1 weiterleite.

    Code
    CONNECT www.google.at:443 HTTP/1.1


    Request wird weitergeleitet an http://www.google.at:443, es geht weiter mit:

    Code
    <CR><LF>
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0<CR><LF>
    Proxy-Connection: keep-alive<CR><LF>
    Connection: keep-alive<CR><LF>
    Host: www.google.at:443<CR><LF>
    <CR><LF>


    Unmittelbar darauf: Server - connection closed

    Und das verstehe ich nicht. Warum lehnt der Server (es ist nicht nur bei google so) die https-Verbindung ab?
    Ich habe die Anfrage 1:1 weitergeleitet (byte für byte, per Input-/OutputStreams).
    Gibt es da irgendeine Kommunikation, die da noch nebenher läuft? Oder mache ich sonst irgendeinen Fehler?
    Liegt es vielleicht an der Stückelung der Pakete, da ich alles byte für byte weiterleite, könnte es da sein, dass nicht alles in einem Paket ankommt und der Server das aber so haben will?
    Ich habe schon einiges herumprobiert, aber ich kriege ja nicht mal eine ordentliche Fehlermeldung oder sonst irgendeinen Hinweis vom Server was da schief läuft. :(

  • Problem gelöst.
    Der Browser sendet den (oben angeführten) Request. Der gehört nicht weitergeleitet (hatte mich sowieso schon gewundert), sondern mit einem Reply an den Browser beantwortet:

    HTTP
    HTTP/1.0 200 Connection established\r\n
    Proxy-agent: ProxyServer/1.0\r\n
    \r\n

    Danach geht der Rest 1:1 über den Proxy.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!