cURLを使用してCloudFlareでホストされているWebサイトに接続する際に問題があります。 HTTPSを使用してWebサイトに接続しようとすると、curl -v https://www.xxxxxx.com
次のように表示されます。
* 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を無効にする方法はありますか?または他のもの?
答え1
この問題は、ECC 256ビットSSL証明書とECDSA署名アルゴリズム(CloudFlareで使用)をサポートしていないcURLバージョンが原因で発生したようです。次のコマンドを実行して、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はアップデートをパッケージに適用する前に徹底的にフィルタリングしているように見えるため、この問題がいつ解決されるかを言うのは困難です。これただこの問題に対する解決策は、cURLを更新しても合格または-k
機能--insecure
しないことです。