cURL을 사용하여 CloudFlare에서 호스팅하는 웹 사이트에 연결하는 데 문제가 있습니다. HTTPS(사용)를 사용하여 웹사이트에 연결하려고 하면 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
하지 않는 것입니다.