다음과 같이 cURL을 사용하여 웹사이트를 열려고 합니다.
$ curl -vH "Accept: application/json" https://www.rocketleaguereplays.com/api/replays/-1/
출력은 다음과 같습니다
* Trying 104.24.114.83...
* Connected to www.rocketleaguereplays.com (104.24.114.83) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS header, Unknown (21):
* TLSv1.2 (IN), TLS alert, Server hello (2):
* error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, Client hello (1):
curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Linux 커널 4.4.0과 최신 cURL 버전을 설치했습니다.
$ curl -V
curl 7.47.1 (x86_64-pc-linux-gnu) libcurl/7.47.1 OpenSSL/1.0.2f zlib/1.2.8 c-ares/1.10.0 nghttp2/1.6.0
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM SSL libz TLS-SRP HTTP2 UnixSockets
이 문제를 어떻게 해결할 수 있나요? Ubuntu에서는 cURL 및 동일한 URL과 함께 작동합니다.
답변1
원래,https://www.rocketleaguereplays.com오래된 암호화(SSL3)를 사용하면 -k(--insecure) 스위치를 사용하여 컬을 강제로 이와 같이 안전하지 않은 사이트에 연결할 수 있습니다.
이 시도:
curl -kvH "Accept: application/json" https://www.rocketleaguereplays.com/api/replays/-1/
-3
aka 스위치를 사용해 볼 수도 있지만 --sslv3
, 빌드 시 SSL3가 지원되지 않으면 SSL3을 활성화하기 위해 자체 컬 버전을 컴파일해야 합니다.
편집: Ops가 문제를 발견했습니다.
오류 메시지 때문에 혼란스럽습니다.
이것은 젠투의 버그입니다:
https://bugs.gentoo.org/show_bug.cgi?id=531540
기본적으로 Bindist 플래그를 사용하여 openssl을 빌드하면 타원 곡선 암호화가 비활성화됩니다. 웹사이트에는 타원곡선 암호화가 필요합니다.
이것을 실행하면 다음과 같은 결과를 얻습니다.
$ curl -vH "Accept: application/json" https://www.rocketleaguereplays.com/api/replays/-1/ * STATE: INIT => CONNECT handle 0x6000572d0; line 1090 (connection #-5000) * Added connection 0. The cache now contains 1 members * Trying 2400:cb00:2048:1::6818:7353... * STATE: CONNECT => WAITCONNECT handle 0x6000572d0; line 1143 (connection #0) * Connected to www.rocketleaguereplays.com (2400:cb00:2048:1::6818:7353) port 443 (#0) * STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x6000572d0; line 1240 (connection #0) * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * TLSv1.2 (OUT), TLS header, Certificate Status (22): * TLSv1.2 (OUT), TLS handshake, Client hello (1): * STATE: SENDPROTOCONNECT => PROTOCONNECT handle 0x6000572d0; line 1254 (connection #0) * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-ECDSA-AES128-GCM-SHA256 <---- [...]
그래서 이 사이트의 내 컬은 타원 곡선을 사용합니다.