curl: (35) помилка: 1408F10B: Підпрограми SSL: ssl3_get_record: неправильний номер версії


127

Коли я намагаюся підключитися до будь-якого сервера (наприклад, google.com) за допомогою curl (або libcurl), я отримую повідомлення про помилку:

curl: (35) помилка: 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'  

З якоїсь причини curl, здається, використовує TLSv1.3, навіть якщо я змушую його використовувати TLSv1.2 за допомогою команди --tlsv1.2 (він все одно надрукує 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  

Я думаю, що це проблема, пов'язана з моєю установкою програм. Хтось може пояснити мені, що означає це повідомлення про помилку?

Відповіді:


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

Це https://неправильно, воно повинно бути http://. Доступ до самого проксі повинен мати HTTP, а не HTTPS, хоча цільовою URL-адресою є HTTPS. Проте проксі-сервер буде належним чином обробляти з'єднання HTTPS і зберігати наскрізне шифрування. Докладніше про те, як це робиться, див. У методі HTTP CONNECT .


7
якщо у вас є ця помилка в Docker,
виставлення

7

Проста відповідь

Якщо ви стоїте за проксі-сервером, встановіть проксі для curl. Завиток не може підключитися до сервера, тому відображається неправильний номер версії. Встановіть проксі, відкривши subl ~ / .curlrc або використовуйте будь-який інший текстовий редактор. Потім додайте до файлу такий рядок: proxy = proxyserver: proxyport Наприклад, proxy = 10.8.0.1:8080

Якщо ви не за проксі, переконайтесь, що файл curlrc не містить налаштувань проксі.


7

Якщо хтось отримує цю помилку за допомогою Nginx, спробуйте додати до конфігурації сервера таке:

server {
    listen 443 ssl;
    ...
}

Проблема пов’язана з тим, що Nginx обслуговує HTTP-сервер клієнту, який очікує HTTPS на будь-якому порту, який ви слухаєте. Коли ви вказуєте sslв listenдирективі, ви очищаєте це на стороні сервера.


2
thx, це привело мене до рішення, просто пропустив 'ssl' у згаданому рядку конфігурації nginx
нормальний

0

Простіше в один рядок:

проксі = 192.168.2.1: 8080; curl -v example.com

напр. $ проксі = 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 Середня швидкість Час Час Поточне завантаження Завантажити Загальна витрачена ліва швидкість 0 0 0 0 0 0 0 0 -: -: - -: -: - -: -: - - 0

  • Спроба 172.217.163.46:443 ...
  • TCP_NODELAY встановлено
  • Підключено до google.com (172.217.163.46) порт 443 (# 0)
  • ALPN, пропонуючи h2
  • ALPN, пропонуючи http / 1.1
  • успішно встановити місця підтвердження сертифіката:
  • CAfile: /etc/ssl/certs/ca-certificates.crt CApath: / etc / ssl / certs} [5 байт даних]
  • TLSv1.3 (OUT), рукостискання TLS, привіт клієнта (1):} [512 байт даних]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.