[ssl] curl : (35) error : 1408F10B : SSL 루틴 : ssl3_get_record : 잘못된 버전 번호

curl (또는 libcurl)을 사용하여 서버 (예 : google.com)에 연결하려고하면 오류 메시지가 나타납니다.

curl : (35) error : 1408F10B : SSL 루틴 : ssl3_get_record : 잘못된 버전 번호

자세한 출력 :

$ curl www.google.com --verbose
* Rebuilt URL to: www.google.com/
* Uses proxy env variable no_proxy == 'localhost,127.0.0.1,localaddress,.localdomain.com'
* Uses proxy env variable http_proxy == 'https://proxy.in.tum.de:8080'
*   Trying 131.159.0.2...
* TCP_NODELAY set
* Connected to proxy.in.tum.de (131.159.0.2) port 8080 (#0)
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* error:1408F10B:SSL routines:ssl3_get_record:wrong version number
* Closing connection 0
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number'

어떤 이유로 컬은 –tlsv1.2 명령으로 TLSv1.2를 사용하도록 강요하더라도 TLSv1.3을 사용하는 것 같습니다 (여전히 TLSv1.3 (OUT)을 인쇄합니다. … “최신 버전을 사용하고 있습니다. Curl과 OpenSSL 모두 :

$ curl -V
curl 7.61.0-DEV (x86_64-pc-linux-gnu) libcurl/7.61.0-DEV OpenSSL/1.1.1 zlib/1.2.8
Release-Date: [unreleased]
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS-proxy

프로그램 설치와 관련된 문제라고 생각합니다. 누군가이 오류 메시지가 무엇을 의미하는지 설명 할 수 있습니까?



답변

* Uses proxy env variable http_proxy == 'https://proxy.in.tum.de:8080'
                                         ^^^^^

(가) https://잘못, 그것은해야http:// . 프록시 자체는 대상 URL이 HTTPS 인 경우에도 HTTPS가 아닌 HTTP로 액세스해야합니다. 그럼에도 불구하고 프록시는 HTTPS 연결을 제대로 처리하고 종단 간 암호화를 유지합니다. 이것이 수행되는 방법에 대한 자세한 내용 은 HTTP CONNECT 메소드 를 참조하십시오 .


답변

간단한 대답

프록시 서버 뒤에있는 경우 curl에 프록시를 설정하십시오. 컬은 서버에 연결할 수 없어 잘못된 버전 번호를 표시합니다. subl ~ / .curlrc 를 열어 프록시를 설정 하거나 다른 텍스트 편집기를 사용하십시오. 그런 다음 파일에 다음 행을 추가하십시오. proxy = proxyserver : proxyport 예 : proxy = 10.8.0.1:8080

프록시 뒤에 있지 않은 경우 curlrc 파일에 프록시 설정이 포함되어 있지 않은지 확인하십시오.


답변

Nginx를 사용하여이 오류가 발생하는 경우 서버 구성에 다음을 추가해보십시오.

server {
    listen 443 ssl;
    ...
}

이 문제는 Nginx가 수신중인 포트에 관계없이 HTTPS를 예상하는 클라이언트에 HTTP 서버를 제공하기 때문에 발생합니다. 사용자가 지정하면 ssllisten지시, 당신은 서버 측에이를 취소합니다.


답변

한 줄로 더 간단하게 :

proxy = 192.168.2.1 : 8080; curl -v example.com

예. $ proxy = 192.168.2.1 : 8080; curl -v example.com

xxxxxxxxx-ASUS : ~ $ proxy = 192.168.2.1 : 8080; curl -v https : //google.com | head -c 15 % 총 수신 % Xferd 평균 속도 시간 시간 시간 현재 Dload 업로드 총 소비 잔여 속도 000 000-:-:–:-:–:-:-0

  • 172.217.163.46:443 시도 중 …
  • TCP_NODELAY 설정
  • google.com (172.217.163.46) 포트 443 (# 0)에 연결됨
  • ALPN, h2 제공
  • http / 1.1을 제공하는 ALPN
  • 인증서 확인 위치를 성공적으로 설정했습니다.
  • CAfile : /etc/ssl/certs/ca-certificates.crt CApath : / etc / ssl / certs} [5 바이트 데이터]
  • TLSv1.3 (OUT), TLS 핸드 셰이크, 클라이언트 hello (1) :} [512 바이트 데이터]


답변