Перенос bat с windows 10 на windows 7, ошибка с curl
На моей Windows 10 разработан bat для curl, отрабатывает на ура.
Но когда я переношу её на windows 7, то выходит ошибка SSL.
На windows 10 уже автоматом стоит curl, а на windows 7 пришлось установить самому.
Такую же версию установить не получилось...
Пример кода:
curl -X POST https://MySite -H "Content-Type: application/json" -d "MyJSON" --output "C:\MyFile.txt"
Как исправить данную проблему?
curl windows 10 = curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
curl windows 7 = curl 7.78.0 ... (Скачал и разархивировал в System32)
ОБНОВЛЕНИЕ
После добавления --cacert ошибка стала 77
curl --cacert "C:\MyCert.cer" -X POST ...

После добавления curl -k -v -X POST ...

После снижения TLS, что уже пробовал

Для сравнения на Win10 curl -v ...

МОЕ РЕШЕНИЕ
Я посчитал проще обновить Win7 до Win10.
Но для кого это не решение, я вопрос не удаляю. Надеюсь Вам помогут в ответах.
Ответы (1 шт):
UPD
Судя по выводу curl -v ваш клиент начинает с TLS 1.3, на что сервер отвечает failure и прерывает handshake.
Попробуйте понизить версию TLS в запросе: до TLS 1.2 curl.exe -v -k --tlsv1.2 --tls-max 1.2 ...
или до TLS 1.1 curl.exe -v -k --tlsv1.1 --tls-max 1.1 ...
По идее, TLS 1.2 должно быть достаточно.
* * *
Вы пишете что-то удивительное.
Для проверки я скачал culr-7.78.0, распаковал и протестировал.
PS:tmp> .\curl-7.78.0-win64-mingw\curl-7.78.0-win64-mingw\bin\curl.exe -V
curl 7.78.0 (x86_64-pc-win32) libcurl/7.78.0 OpenSSL/1.1.1k (Schannel) zlib/1.2.11 brotli/1.0.9 zstd/1.5.0 libidn2/2.3.2 libssh2/1.9.0 nghttp2/1.44.0 libgsasl/1.10.0
Release-Date: 2021-07-21
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL SSPI TLS-SRP UnixSockets zstd
В качестве объекта я взял сайт https://self-signed.badssl.com/ с самоподписным сертификатом.
Сначала запуск curl с параметрами по умолчанию:
PS:tmp> .\curl-7.78.0-win64-mingw\curl-7.78.0-win64-mingw\bin\curl.exe https://self-signed.badssl.com/
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
Как и ожидалось, curl отказался работать с сайтом из-за невозможности верифицировать сертификат.
Вторая попытка. Я скачал сертификат сайта и указал его в опции cacert. Так как сертификат самоподписной, то он сам себе CA cert.
PS:tmp> .\curl-7.78.0-win64-mingw\curl-7.78.0-win64-mingw\bin\curl.exe --cacert .\self-signed.crt.cer https://self-signed.badssl.com/
<!DOCTYPE html>
<html>
<head>
...
Работает.
Третья попытка. Отключить проверку сертификата -k:
PS:tmp> .\curl-7.78.0-win64-mingw\curl-7.78.0-win64-mingw\bin\curl.exe -k https://self-signed.badssl.com/
<!DOCTYPE html>
<html>
<head>
...
Тоже работает.
Либо вы что-то не то скачали, либо не так установили, либо что-то недоговариваете. curl -k обязан работать.
