curl:(35)エラー:1408F10B:SSLルーチン:ssl3_get_record:間違ったバージョン番号


126

curl(またはlibcurl)を使用して任意のサーバー(google.comなど)に接続しようとすると、次のエラーメッセージが表示されます。

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'  

何らかの理由で、コマンド--tlsv1.2でTLSv1.2を使用するように強制しても、curlは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  

これは私のプログラムのインストールに関連する問題だと思います。このエラーメッセージの意味を誰かに説明してもらえますか?

回答:


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

https://間違っている、それがあるべきhttp://。ターゲットURLがHTTPSであっても、プロキシ自体にはHTTPSではなくHTTPでアクセスする必要があります。それでも、プロキシはHTTPS接続を適切に処理し、エンドツーエンドの暗号化を維持します。参照してください。HTTP CONNECTメソッドこれがどのように行われるかの詳細については。


7
あなたが公衆にポート443を暴露ドッカーでこのエラーを、持っている場合は、この問題は、固定
Dr.X

7

簡単な答え

プロキシサーバーの背後にいる場合は、curlのプロキシを設定してください。カールはサーバーに接続できないため、間違ったバージョン番号が表示されます。subl〜 / .curlrcを開くか、他のテキストエディタを使用してプロキシを設定します。次に、次の行をファイルに追加します。proxy= proxyserver:proxyportたとえば、proxy = 10.8.0.1:8080

プロキシの背後にいない場合は、curlrcファイルにプロキシ設定が含まれていないことを確認してください。


7

Nginxを使用してこのエラーが発生した場合は、サーバー構成に次を追加してみてください。

server {
    listen 443 ssl;
    ...
}

この問題は、NginxがリッスンしているポートでHTTPSを期待しているクライアントにHTTPサーバーを提供していることに起因します。あなたが指定した場合ssllistenディレクティブは、サーバー側でこれをクリア。


2
thx、これは私を解決策に導きました、単に言及されたnginx構成行の「ssl」を逃しました
通常の

0

より簡単に1行で:

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%Total%Received%Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 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ハンドシェイク、クライアントhello(1):} [512バイトのデータ]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.