CloudFlareでホストされているウェブサイトへのcURLを使用した接続に問題があります。 HTTPSで(curl -v https://www.xxxxxx.com
を使用して)Webサイトに接続しようとすると、次のように表示されます。
* 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).
私はこの問題についてCloudFlareに連絡しましたが、cURLがSSLv3を使用して接続しようとしていて、POODLEの脆弱性のためにそれを無効にしたためと彼らは言っています。 FreeBSD 10ではcURL v7.38.0に問題なく接続できますが、CentOS 6.5のcURL v7.29.0では接続できません。
SSLv3に接続しようとしていることが原因である場合、cURLでSSLv3を無効にするにはどうすればよいですか?それとも別のものですか?
この問題は、cURLのバージョンがECC 256ビットSSL証明書とECDSA署名アルゴリズム(CloudFlareで使用される)をサポートしていないことが原因であるようです。次のコマンドを実行すると、cURLのバージョンがこの暗号化をサポートしているかどうかをテストできます。
curl -1IsS --ciphers ecdhe_ecdsa_aes_128_sha https://sslspdy.com
以下を取得した場合、cURLは古くなっています。
curl: (59) Unknown cipher in list: ecdhe_ecdsa_aes_128_sha
それ以外の場合、接続してエラーが表示されなければ、最新の状態です。
CentOSはアップデートがパッケージに適用される前に徹底的にスクリーニングするように見えるため、いつ修正されるかはわかりません。 [〜#〜] only [〜#〜]これを回避する方法は、cURLを更新することで、-k
または--insecure
を渡しても機能しません。