SSLv3 in cURL deaktivieren?

7

Ich habe ein Problem beim Herstellen einer Verbindung zu einer Website, die mit cURL mit CloudFlare gehostet wird. Wenn ich versuche, mit HTTPS (using curl -v https://www.xxxxxx.com) eine Verbindung zur Website herzustellen , heißt es:

* About to connect() to www.xxxxxx.com port 443 (#0)
*   Trying 2400:cb00:2048:1::681c:116e...
* Connected to www.xxxxxx.com (2400:cb00:2048:1::681c:116e) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NSS error -12286 (SSL_ERROR_NO_CYPHER_OVERLAP)
* Cannot communicate securely with peer: no common encryption algorithm(s).
* Error in TLS handshake, trying SSLv3...
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.xxxxxx.com
> Accept: */*
>
* Connection died, retrying a fresh connect
* Closing connection 0
* Issue another request to this URL: 'https://www.xxxxxx.com'
* About to connect() to www.xxxxxx.com port 443 (#1)
*   Trying 2400:cb00:2048:1::681c:116e...
* Connected to www.xxxxxx.com (2400:cb00:2048:1::681c:116e) port 443 (#1)
* TLS disabled due to previous handshake failure
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NSS error -12286 (SSL_ERROR_NO_CYPHER_OVERLAP)
* Cannot communicate securely with peer: no common encryption algorithm(s).
* Closing connection 1
curl: (35) Cannot communicate securely with peer: no common encryption algorithm(s).

Ich habe CloudFlare wegen dieses Problems kontaktiert und sie sagen, es liegt daran, dass cURL versucht, eine Verbindung mit SSLv3 herzustellen, und sie haben es wegen der POODLE-Sicherheitsanfälligkeit deaktiviert. Ich kann ohne Probleme eine Verbindung mit cURL v7.38.0 unter FreeBSD 10 herstellen, aber nicht mit cURL v7.29.0 unter CentOS 6.5.

Wie kann ich SSLv3 auf cURL deaktivieren, wenn versucht wird, eine Verbindung zu SSLv3 herzustellen? Oder ist es etwas anderes?

ub3rst4r
quelle
1
Versuchen Sie ein Upgrade nss.
Jordanm
1
Ebenso wichtig ist es, Curl die Verwendung von TLS zu ermöglichen. Ihre Locke scheint nicht in der Lage zu sein, das TLS-Protokoll zu verarbeiten, weshalb sie in erster Linie auf SSLv3 zurückgegriffen hat. Wenn Sie SSLv3 deaktivieren, entsteht eine Locke, die keine SSL-Verbindungen herstellen kann, da Sie anscheinend keine TLS-Fähigkeit haben. Ich werde diesen Thread / Kommentar aktualisieren, wenn ich etwas finden kann.
Citylight

Antworten:

8

Es sieht so aus, als ob dieses Problem durch die Version von cURL verursacht wird, die keine ECC 256-Bit-SSL-Zertifikate unterstützt, und durch den ECDSA-Signaturalgorithmus (der von CloudFlare verwendet wird). Sie können testen, ob Ihre Version von cURL diese Verschlüsselung unterstützt, indem Sie Folgendes ausführen:

curl -1IsS --ciphers ecdhe_ecdsa_aes_128_sha https://sslspdy.com

Wenn Sie Folgendes erhalten, ist Ihre cURL veraltet:

curl: (59) Unknown cipher in list: ecdhe_ecdsa_aes_128_sha

Andernfalls ist es auf dem neuesten Stand, wenn eine Verbindung hergestellt wird und kein Fehler angezeigt wird.

Da CentOS Aktualisierungen gründlich zu überprüfen scheint, bevor sie auf ihre Pakete angewendet werden, ist es schwer zu sagen, wann dies behoben wird. Die einzige Möglichkeit, dies zu umgehen, besteht darin, cURL zu aktualisieren, zu übergeben -koder --insecurenicht zu funktionieren.

ub3rst4r
quelle
Beachten Sie, dass es auch Verhandlungsprobleme gibt. IE spezifiziert die --ciphers wie oben, funktioniert, aber das ist derzeit erforderlich
Pádraig Brady
Danke für diese Antwort. Ich verwende CentOS 6.6 neun Monate später und es verursacht immer noch ein Problem. Zumindest weiß ich jetzt warum.
Dejay Clayton
Ich verwende CentOS v7.1.1503 (mit allen Updates bis zum 15. Juli 2015) und cURL funktioniert NUR, wenn --ciphers ecdhe_ecdsa_aes_128_shaangegeben. Andernfalls gibt es den FehlerNSS error -12286 (SSL_ERROR_NO_CYPHER_OVERLAP)
ub3rst4r