curl не может проверить самоподписанный сертификат после перенаправления с HTTP на HTTPS - PullRequest
0 голосов
/ 30 мая 2020

У меня проблема с самоподписанным SSL-сертификатом и curl.

Сервер - lighttpd. HTTPS работает нормально:

$ curl https://192.168.144.1/zxc -k
HELLO

Но с перенаправлением из HTTP он не работает:

curl http://192.168.144.1:81/zxc -kvL
*   Trying 192.168.144.1...
* TCP_NODELAY set
* Connected to 192.168.144.1 (192.168.144.1) port 81 (#0)
> GET /zxc HTTP/1.1
> Host: 192.168.144.1:81
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Location: https://192.168.144.1:81/zxc
< Content-Length: 0
< Date: Sat, 30 May 2020 06:59:57 GMT
< Server: lighttpd/1.4.48
<
* Connection #0 to host 192.168.144.1 left intact
* Issue another request to this URL: 'https://192.168.144.1:81/zxc'
* Hostname 192.168.144.1 was found in DNS cache
*   Trying 192.168.144.1...
* TCP_NODELAY set
* Connected to 192.168.144.1 (192.168.144.1) port 81 (#1)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):

........... HERE IT STACKS FOR A MINUTE ....................

* LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 192.168.144.1:81
* stopped the pause stream!
* Closing connection 1
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 192.168.144.1:81

Одно из возможных решений, которое я нашел здесь { ссылка }: CURLOPT_SSL_VERIFYPEER = false. Как передать его в CURL CLI?

1 Ответ

1 голос
/ 30 мая 2020
> * LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 192.168.144.1:81

Ошибка SSL_ERROR_SYSCALL, и это не имеет ничего общего с проверкой сертификата. Фактически, более пристальный взгляд на то, что вы делаете, показывает, что вы перенаправляете с простого HTTP на порт 81 на HTTPS на том же порту .

curl http://192.168.144.1:81/zxc -kvL
...
< HTTP/1.1 301 Moved Permanently
< Location: https://192.168.144.1:81/zxc

Это сильно отличается от того, что вы тестировали раньше, когда вы использовали HTTPS на стандартном порте (443). И весьма вероятно, что ваш HTTP-сервер не поддерживает HTTP и HTTPS на одном и том же порту 81 - большинство серверов даже не поддерживают такую ​​конфигурацию.

...