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?
nss
.Antworten:
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:
Wenn Sie Folgendes erhalten, ist Ihre cURL veraltet:
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
-k
oder--insecure
nicht zu funktionieren.quelle
--ciphers ecdhe_ecdsa_aes_128_sha
angegeben. Andernfalls gibt es den FehlerNSS error -12286 (SSL_ERROR_NO_CYPHER_OVERLAP)