컬 및 HTTPS를 사용하는 스크립트에 영향을 미치는 Debian 버전 변경

컬 및 HTTPS를 사용하는 스크립트에 영향을 미치는 Debian 버전 변경

최근에 Debian 9(Debian 8.x의 9.4)를 사용하기 시작했는데 컬과 관련된 스크립트가 작동을 멈췄습니다. 상위 프록시에 연결된 localhost의 오징어 프록시를 통해 인터넷에 연결합니다.

내 환경 변수는 다음과 같이 구성됩니다.

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

wget을 사용하면 작동합니다.

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]

컬을 사용할 때, 이것이 내가 얻는 것입니다

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

이 두 명령은 동일하지 않다는 것을 알고 있습니다. 이는 단지 HTTPS 전송 문제를 설명하기 위한 것입니다.

스크립트가 웹 API를 사용하기 때문에 컬을 사용해야 하므로 GET 요청 대신 POST를 사용해야 하고, POST 요청에 일부 헤더와 데이터를 설정해야 합니다. (api.dropboxapi.com이 대상 사이트입니다)

이 모든 것은 데비안 8에서 문제 없이 작동하는 데 사용되었으며 wget WORKS 외에도 데비안 버전 변경으로 인해 컬만 실패합니다. 다른 모든 HTTPS 클라이언트는 영향을 받지 않은 것 같습니다(FF, Chrome, Edge, wget은 모두 평소대로 작동하는 것 같습니다).

이 문제에 대해 아는 사람이 있나요? 데비안 9 버전의 컬을 작동시키기 위한 해결 방법, 수정 사항, 명령줄 옵션 변경 등이 있습니까?

"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

답변1

Michael Hampton에게 많은 감사를 드립니다(댓글 참조). 문제는 프록시 구성에 있는 것으로 나타났습니다. 그것은 말해야한다

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

따라서 컬은 TLS를 사용하여 오징어에 연결을 시도했지만 물론 실패했습니다.

관련 정보