Cambio de versión de Debian que afecta a los scripts que utilizan curl y HTTPS

Cambio de versión de Debian que afecta a los scripts que utilizan curl y HTTPS

Recientemente comencé a usar Debian 9 (9.4, de Debian 8.x) y un script que involucraba curl dejó de funcionar. Me conecto a Internet a través de un proxy squid en localhost conectado a un proxy principal.

Mis variables de entorno están configuradas así

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

Cuando uso wget, funciona:

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]

cuando uso curl, esto es lo que obtengo

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

Sé que estos dos comandos no son equivalentes, esto es sólo para ilustrar el problema de la transferencia HTTPS.

Necesito usar curl porque el script usa una API web, por lo que necesita usar POST en lugar de la solicitud GET y configurar algunos encabezados y datos para la solicitud POST. (api.dropboxapi.com es el sitio de destino)

Todo esto solía funcionar en Debian 8 sin problemas y, además de wget FUNCIONA, solo curl falla con el cambio de versión de Debian. Todos los demás clientes HTTPS no parecen verse afectados (FF, Chrome, Edge, wget parecen funcionar como siempre)

¿Alguien sabe sobre este problema? ¿Existe alguna solución alternativa, cambio de opción de línea de comando o lo que sea para hacer que la versión de curl de Debian 9 funcione?

Salida de "curl -V"

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

Respuesta1

Muchas, muchas gracias a Michael Hampton (Ver comentarios). Resulta que el problema estaba en la configuración del proxy. debería decir

https_proxy=http://127.0.0.1:3128
HTTPS_PROXY=http://127.0.0.1:3128

Entonces curl estaba intentando conectarse a Squid usando TLS y fallando, por supuesto.

información relacionada