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
curl -V
.Jawaban:
Banyak, banyak terima kasih kepada Michael Hampton. Ternyata masalahnya ada di konfigurasi proxy. Seharusnya dikatakan
Jadi curl berusaha menghubungkan ke squid menggunakan TLS dan gagal tentu saja.
Jawaban asli di https://serverfault.com/questions/901626/debian-version-change-affecting-scripts-using-curl-and-https
sumber