meringkuk masalah HTTPS di debian 9

1

Baru-baru ini saya mulai menggunakan Debian 9 (9,4, dari Debian 8.x) dan skrip yang melibatkan curl berhenti bekerja. Saya terhubung ke internet melalui proxy squid di localhost yang terhubung ke proxy induk.

Variabel lingkungan saya dikonfigurasi seperti ini

root@server:~# printenv | grep -i proxy
HTTP_PROXY=http://127.0.0.1:3128
FTP_PROXY=http://127.0.0.1:3128
https_proxy=https://127.0.0.1:3128
http_proxy=http://127.0.0.1:3128
HTTPS_PROXY=https://127.0.0.1:3128
ftp_proxy=http://127.0.0.1:3128

Ketika saya menggunakan wget, itu berfungsi:

root@server:~# wget https://www.google.com.cu
--2018-03-14 09:08:53--  https://www.google.com.cu/
Connecting to 127.0.0.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’

index.html                  [ <=>                          ]  11.12K  --.-KB/s    in 0.001s

2018-03-14 09:08:54 (14.9 MB/s) - ‘index.html’ saved [11389]

ketika saya menggunakan curl, inilah yang saya dapatkan

root@server:~# curl -v https://www.google.com.cu
* Rebuilt URL to: https://www.google.com.cu/
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to (nil) (127.0.0.1) port 3128 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection:     ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
* Curl_http_done: called premature == 0
* Closing connection 0
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Saya tahu kedua perintah ini tidak setara, ini hanya untuk menggambarkan masalah transfer HTTPS.

Saya perlu menggunakan ikal karena skrip menggunakan API web, jadi itu perlu menggunakan POST bukan permintaan GET, dan untuk mengatur beberapa header dan data ke permintaan POST. (api.dropboxapi.com adalah situs target)

Ini semua digunakan untuk bekerja pada Debian 8 tanpa hambatan, dan selain wget WORKS, hanya curl yang gagal dengan perubahan versi debian. Semua klien HTTPS lain tampaknya tidak terpengaruh (FF, Chrome, Edge, wget semua sepertinya berfungsi seperti biasa)

Saya tahu curl sedikit pilih-pilih tentang koneksi TLS, tetapi ini sedikit ekstrem. Saya menguji kedua situs (www.google.com.cu dan api.dropboxapi.com) di https://www.ssllabs.com/ssltest/index.html dan keduanya datang sebagai "A" pada peringkat keseluruhan)

Apakah ada solusi, perbaikan, opsi baris perintah atau apa pun untuk membuat curl berfungsi?

Output dari curl -V seperti yang diminta

root@server:~# curl -V
curl 7.52.1 (x86_64-pc-linux-gnu) libcurl/7.52.1 OpenSSL/1.0.2l zlib/1.2.8 libidn2/0.16 libpsl/0.17.0 (+libidn2/0.16) libssh2/1.7.0 nghttp2/1.18.1 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
Yanko Hernández Álvarez
sumber
Saya menduga itu karena kurangnya dukungan dalam versi curl Anda untuk protokol dan / atau cipher yang digunakan oleh situs jarak jauh. Mungkin bermanfaat untuk mengedit jawaban Anda untuk memasukkan output dari curl -V.
Anthony Geoghegan

Jawaban: