Kiedy próbuję połączyć się z dowolnym serwerem (np. Google.com) za pomocą curl (lub libcurl), pojawia się komunikat o błędzie:
curl: (35) błąd: 1408F10B: procedury SSL: ssl3_get_record: nieprawidłowy numer wersji
Gadatliwe wyjście:
$ 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'
Z jakiegoś powodu curl wydaje się używać TLSv1.3, nawet jeśli wymuszę na nim używanie TLSv1.2 za pomocą polecenia --tlsv1.2 (nadal będzie drukować TLSv1.3 (OUT), ... "Używam najnowszej wersji zarówno Curl, jak i 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
Myślę, że jest to problem związany z moją instalacją programów. Czy ktoś może mi wyjaśnić, co oznacza ten komunikat o błędzie?
Prosta odpowiedź
Jeśli jesteś za serwerem proxy, ustaw proxy dla curl. Curl nie może połączyć się z serwerem, więc pokazuje nieprawidłowy numer wersji. Ustaw proxy, otwierając subl ~ / .curlrc lub użyj dowolnego innego edytora tekstu. Następnie dodaj następujący wiersz do pliku: proxy = proxyserver: proxyport Na przykład proxy = 10.8.0.1:8080
Jeśli nie korzystasz z serwera proxy, upewnij się, że plik curlrc nie zawiera ustawień proxy.
źródło
Jeśli ktoś napotyka ten błąd przy użyciu Nginx, spróbuj dodać do konfiguracji serwera:
Problem wynika z tego, że Nginx obsługuje serwer HTTP klientowi oczekującemu protokołu HTTPS na dowolnym porcie, na którym nasłuchujesz. Określając
ssl
wlisten
dyrektywie, należy to wyjaśnić po stronie serwera.źródło
Prościej w jednej linii:
proxy = 192.168.2.1: 8080; curl -v example.com
na przykład. $ 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% Łącznie% Odebrane% Xferd Średnia prędkość Czas Czas Bieżące pobieranie Wysyłanie Łącznie spędzona prędkość w lewo 0 0 0 0 0 0 0 0 -: -: - -: -: - -: -: - 0
źródło