Récemment, j'ai commencé à utiliser Debian 9 (9.4, depuis Debian 8.x) et un script impliquant curl a cessé de fonctionner. Je me connecte à Internet via un proxy squid sur localhost connecté à un proxy parent.
Mes variables d'environnement sont configurées comme suit
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
Lorsque j'utilise wget, cela fonctionne :
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]
quand j'utilise curl, voilà ce que j'obtiens
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
Je sais que ces deux commandes ne sont pas équivalentes, c'est juste pour illustrer le problème du transfert HTTPS.
J'ai besoin d'utiliser curl parce que le script utilise une API web, il a donc besoin d'utiliser la requête POST au lieu de GET, et de définir certains en-têtes et données à la requête POST. (api.dropboxapi.com est le site cible)
Tout cela fonctionnait sur Debian 8 sans problème, et en plus de wget qui fonctionne, seul curl échoue avec le changement de version de Debian. Tous les autres clients HTTPS ne semblent pas affectés (FF, Chrome, Edge, wget semble fonctionner comme toujours).
Je sais que curl est un peu pointilleux sur les connexions TLS, mais là c'est un peu extrême. J'ai testé les deux sites (www.google.com.cu et api.dropboxapi.com) sur https://www.ssllabs.com/ssltest/index.html et les deux ont un "A" sur la note globale)
Existe-t-il une solution de contournement, un correctif, une option de ligne de commande ou autre pour faire fonctionner curl ?
Sortie de curl -V comme demandé
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