curl: (35) ข้อผิดพลาด: 1408F10B: รูทีน SSL: ssl3_get_record: หมายเลขเวอร์ชันไม่ถูกต้อง


127

เมื่อฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์ใด ๆ (เช่น google.com) โดยใช้ curl (หรือ libcurl) ฉันได้รับข้อความแสดงข้อผิดพลาด:

curl: (35) ข้อผิดพลาด: 1408F10B: รูทีน SSL: ssl3_get_record: หมายเลขเวอร์ชันไม่ถูกต้อง

เอาต์พุต Verbose:

$ 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สำหรับรายละเอียดวิธีการดำเนินการ


7
หากคุณมีข้อผิดพลาดนี้ใน Docker การเปิดเผยพอร์ต 443 สู่สาธารณะแก้ไขปัญหานี้
Dr.X

7

คำตอบง่ายๆ

หากคุณอยู่หลังพร็อกซีเซิร์ฟเวอร์โปรดตั้งค่าพร็อกซีสำหรับ curl 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
ขอบคุณสิ่งนี้นำฉันไปสู่การแก้ปัญหาเพียงแค่พลาด 'ssl' ในบรรทัดกำหนดค่า nginx ที่กล่าวถึง
ปกติ

0

ง่ายขึ้นในบรรทัดเดียว:

พร็อกซี = 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 ปัจจุบันทั้งหมดที่ใช้ความเร็วด้านซ้าย 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 handshake, Client hello (1):} [512 bytes data]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.