Ist es für eine Website möglich, dass die URL mit "http: //" unter Verwendung des HTTPS-Protokolls beginnt?

8

Ich habe eine Site, deren URL mit "http: //" beginnt, aber das gibt mir eine Ausnahme mit der Nachricht - Nicht unterstütztes Protokoll: https. Ist es möglich, dass die Site das HTTPS-Protokoll verwendet, so beginnt ihre URL mit "http: //" und nicht mit "https: //".

%Vor%

Stapelverfolgung

%Vor%     
linusunis fed 04.01.2013, 16:55
quelle

3 Antworten

13

Haben Sie den nicht übereinstimmenden Apostroph in der Ausnahmebedingungsnachricht bemerkt?

%Vor%

Update: sieht so aus, als wäre dieser Apostroph nur eine Eigenart, wie der WebLogic HttpClient diese Ausnahme ausgibt.

Askers Wurzelproblem wurde in einer Chat-Sitzung identifiziert: er ist Zugreifen auf eine http: // URL, die ihn an eine https: // URL weiterleitet. Der Webserver unter dieser HTTPS-Adresse empfängt ein Zertifikat, das seinem JRE / HttpClient nicht vertraut.

Die tatsächliche Ausnahme sollte eine SSLKeyException sein. Ich denke, der WebLogic HttpClient meldet dieses Problem falsch als nicht unterstütztes Protokollproblem. Ich denke, das Kernproblem ist:

<Warning> <Security> <BEA-090477> javax.net.ssl.SSLKeyException: [Security:090477] Certificate chain received from www.X.com - nnn.nnn.nnn.nnn was not trusted causing SSL handshake failure.

Dies ist die Nachricht, die der Fragesteller beim direkten Zugriff auf die URL https: // (statt über eine Weiterleitungskette) sieht.

Standardmäßig folgt Java's Http [s] URLConnection automatisch und leise Redirects. Wenn Sie neugierig sind, wohin Sie weitergeleitet werden, versuchen Sie diesen Code:

%Vor%

Beachten Sie, dass die URL, zu der Sie weitergeleitet werden, Sie auch anderswo weiterleiten und weiterleiten kann, bis Ссылка Mal. Redirects können sich auf diese Weise "verketten". Wenn sie eine Kette bilden, müssen Sie den Weiterleitungen folgen, bis Sie eine URL erreichen, die keine Weiterleitung auslöst. Hier endet die URL-Verbindung schließlich, wenn setInstanceFollowRedirects(true) .

Außerdem habe ich in sun.net.www.protocol.http.HttpURLConnection einen Code gefunden, der darauf hinweist, dass HttpURLConnection möglicherweise keine Switching-Protokolle (HTTP - & gt; HTTPS) als Teil seiner automatischen Weiterleitungsfolgelogik unterstützt :

%Vor%

WebLogic verfügt über eine eigene (andere) Implementierung von HttpURLConnection, die jedoch möglicherweise eine ähnliche Logik enthält, um eine Protokollumschaltung zu verhindern. Selbst wenn der Asker seine Zertifikatsvertrauens-Probleme auflöst, kann er HttpURLConnection möglicherweise nicht verwenden, um automatisch einer Weiterleitungskette zu folgen, die von HTTP zu HTTPS geht. Ein Workaround wäre, setInstanceFollowRedirects(false) zu verwenden und Umleitungen manuell zu folgen. Oder greifen Sie direkt auf die HTTPS-Site zu.

    
Mike Clark 04.01.2013, 17:27
quelle
5

HTTP ist ein Protokoll, das unter TCP / IP ausgeführt wird. HTTPS ist HTTP auf einem sicheren Socket (SSL oder neueres TLS). Nun, was ist eine URL? Es ist eine Zeichenfolge, die eine Ressource identifiziert und ungefähr wie folgt aussieht:

%Vor%

Beachten Sie, dass wir manchmal die Portnummer nicht angeben, weil einige Protokolle eine bekannte Portnummer haben. Für HTTP ist 80 und für HTTPS ist 443, also sind diese Zahlen impliziert. Beachten Sie jedoch, dass Sie Ihren Server-Socket an den von Ihnen gewünschten Port binden können: Wenn Sie Ihrem HTTP-Serverprogramm mitteilen, seinen Socket an den Port 8273 auf localhost zu binden, wird es das gerne tun.

Gesagt, dass in Ihrem Fall die Meldung "nicht unterstütztes Protokoll: Ссылка " lautet. Wir können hier nur raten, aber ich denke, die Zeichenfolge, die Sie an die URL übergeben, ist nicht die, die Sie denken.

    
Raffaele 04.01.2013 17:09
quelle
0

Eine andere Möglichkeit besteht darin, dass die HTTP-Adresse mit einer 3xx-Umleitungsantwort auf eine HTTPS-URL antwortet, die Ihr Client zu befolgen versucht, aber nicht unterstützt. Sie können sehr einfach den Netzwerkverkehr mit tcpdump oder wireshark erfassen.

Es gibt so viele Java-HTTP-Client-Bibliotheken, die HTTPS unterstützen, warum nicht zu einem von diesen wechseln?

    
Szocske 05.01.2013 12:02
quelle

Tags und Links