TLS-Curl-POST führt zu einem SSLv3-Fehler

0

Ich versuche, eine POST-Anfrage per Curl an einen Server zu senden, der nur TLS 1.2, TLS 1.1 und TLS 1.0 unterstützt. Selbst wenn ich versuche, die Notwendigkeit für TLS anstelle von SSL v. 3 (Hinzufügen von --- tlsv1) anzugeben, erhalte ich die folgende Antwort:

curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

Dies ist die Version von Curl, die ich verwende:

curl 7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5

Es gibt keine Firewall-Probleme beim Auflösen der URL.

Wie kann ich den POST erfolgreich machen?

Update: Ich habe auch versucht, die Anfrage mit Python zu stellen, um herauszufinden, was das Problem ist. Die URL ist intern, so dass ich das nicht teilen kann, aber Hilfe wäre dankbar, was das Konfigurationsproblem sein könnte. Hier ist der Python-Fehler:

urllib2.URLError: <urlopen error (1, 'error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure')>

Jake
quelle
Wie lautet die URL des Servers, zu dem Sie eine Verbindung herstellen möchten? Wenn Sie es nicht zur Verfügung stellen, können wir Ihnen bei der Fehlersuche nicht helfen. Wir werden die Frage wahrscheinlich als "nicht duplizieren" schließen müssen.
Jww

Antworten:

1

Wie kann ich den POST erfolgreich machen?

Schwer zu sagen, was das Problem ist, ohne die genaue URL zu kennen. In Anbetracht der von Ihnen verwendeten Curl-Version kann es jedoch sein, dass der Server eine Server Name Indication (SNI) benötigt, die von der von Ihnen verwendeten alten Curl-Version nicht unterstützt wird.

Steffen Ullrich
quelle
Ich erhalte den gleichen Fehler, wenn ich die Anfrage mit Python stelle. dh urllib2.URLError: <urlopen error (1, 'error: 14077410: SSL-Routinen: SSL23_GET_SERVER_HELLO: sslv3-Alert-Handshake-Fehler')>
Jake,
@JakeWasdin: Änderungen sind hoch, dass deine Python auch zu alt ist. SNI wird nur seit Python 2.7.9 unterstützt.
Steffen Ullrich
0

Der "Handshake" -Fehler weist darauf hin, dass Client und Server sich nicht darauf einigen konnten, wie der für HTTPS erforderliche sichere Kanal eingerichtet werden soll. Die Version von OpenSSL, die Sie verwenden, ist sehr alt und versteht nur SSL bis zu sslv3, das der Server mindestens benötigt. Daher der "sslv3" -Fehler - er informiert Sie darüber, dass SSL v3 (weniger als TLS v1) verwendet wurde und keine aussagekräftige Antwort erhalten wurde.

Ohne ein Upgrade auf eine neuere Version von OpenSSL haben Sie Pech, und selbst dann muss die Curl-Version möglicherweise auch gestoßen werden, um mit der neueren TLS-Version fertig zu werden.

Liam Dennehy
quelle