LINUX.ORG.RU

curl: (35) Unknown SSL protocol error in connection

 , ,


0

1

Не работает curl на некоторых https-ссылках:

$ curl --version
curl 7.30.0 libcurl/7.30.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz
$ openssl version
OpenSSL 0.9.8zg 14 July 2015
$ curl -O https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
curl: (35) Unknown SSL protocol error in connection to pkgconfig.freedesktop.org:-9824

Можно это починить не обновляя curl или openssl?
Или подскажите зеркало pkg-config с доступом по (ht|f)tp.

★★

  1. Let’s Encrypt отвалился на старых системах в сентябре прошлого года. Но у тебя, скорее всего:

  2. нет поддержки tlsv1.1/1.2. проверь openssl ciphers -v | awk '{print $2}' | sort | uniq

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

Спасибо за ответ! Видимо, нет:

$ openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv2
SSLv3

Проблема в том, что у сервера только TLS?

Evenik ★★
() автор топика
Последнее исправление: Evenik (всего исправлений: 1)
Ответ на: комментарий от Dimez

Понял, буду искать зеркало, спасибо!

Evenik ★★
() автор топика

Не обновляя openssl ты оставляешь какие-то дыры, в том числе, возможно, критические. Не удивлюсь если там какое-нить remote code execution при попытке подключиться к подменённому серверу. Это очень низкокачественная библиотека, в ней постоянно что-то находят, а у тебя версия 10-летней давности. Лучше установи openssl 1.1 хотя бы

firkax ★★★★★
()
Ответ на: комментарий от Evenik

Если задача скачать туда некоторые файлы то скачай их сервером с новым openssl и раздай туда по http через локалку. Это и решит проблему с протоколами и избавит от потенциальных проблем безопасности. Искать зеркало с старым SSLv3 с помощью старого бажного openssl это считай то же самое (или даже хуже) чем качать просто по http (не https) с левого сайта, не надо строить иллюзий по поводу недо-https в данном случае.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Это лютое ненужно, оно того не стоит. Если интересно, рассказываю.

Захотелось достойно отметить День труда, а под рукой только древняя макось. Со старым AnyConnect на работу не пускают, а новый не работает. Решил воспользоваться юниксовостью макоси и установить openconnect. Поиск лёгких путей был напрасным — с Homebrew я тоже опоздал. Выручила суровая магия autotools: деды могли, а мы чего?

И тут Остапа понесло. Для памяти стал конспектировать сборку в виде баш-скипта:

$ cat mk-openconnect
#!/bin/bash
# http://www.infradead.org/openconnect

# uninstall:
# rm -rf $opt/openconnect

# cfg
ver=20220503
prg=`basename $0`
msg="$prg: Ent|C-c?"

pkg=openconnect
hom=/Users/nikolay
pre="$hom/opt/$pkg"
src="$hom/src"

dep=(pkgconfig zlib libxml2 openssl openconnect)

# 2022-05-02/current
ver_pkgconfig=0.29.2
ver_zlib=1.2.12
ver_libxml2=2.9.14
# openssl-3.0.2: SSL_OP_LEGACY_SERVER_CONNECT
ver_openssl=1.1.1n
ver_openconnect=9.01

# !https: old openssl, cacert
url_vpncscript=https://gitlab.com/openconnect/vpnc-scripts/raw/master
#url_pkgconfig=https://pkgconfig.freedesktop.org/releases
url_pkgconfig="file://$hom/Desktop/dist/mac/openconnect"
url_zlib=https://www.zlib.net
#url_libxml2=https://gitlab.gnome.org/GNOME/libxml2/-/archive/v2.9.14
#url_libxml2=https://download.gnome.org/sources/libxml2/2.9/
url_libxml2=http://mirrors.dotsrc.org/gnome/sources/libxml2/2.9
#url_openssl=https://www.openssl.org/source
url_openssl=ftp://ftp.fi.muni.cz/pub/openssl/source
url_openconnect=ftp://ftp.infradead.org/pub/openconnect/

# sha256: most used
chk_vpncscript=48abc54ad462e70ed0e29ca525a33e1d58cf90651e80e49b7d4ff0aaaaeb68b5
chk_pkgconfig=6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591
chk_zlib=91844808532e5ce316b3c010929493c0244f3d37593afd6de04f71821d5136d9
chk_libxml2=60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee
chk_openssl=40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a
chk_openconnect=b3d7faf830e9793299d6a41e81d84cd4a3e2789c148c9e598e4585010090e4c7

tgz=tar.gz
tgz_pkgconfig=$tgz
tgz_zlib=$tgz
tgz_libxml2=tar.xz
tgz_openssl=$tgz
tgz_openconnect=$tgz

cfg=configure
cfg_pkgconfig=$cfg
cfg_zlib=$cfg
cfg_libxml2=$cfg
#cfg_openssl=Configure
cfg_openssl=config
cfg_openconnect=$cfg

opt_pkgconfig='--with-internal-glib'
opt_zlib=''
opt_libxml2=''
opt_openssl="--openssldir=$pre"
opt_openconnect="--with-vpnc-script=$pre/etc/vpnc/vpnc-script --disable-nls"

# lib
chk () {
        chk=$1
        sum=$2
        if [ "$(shasum -a 256 $chk | cut -d' ' -f1)" == "$sum" ]
        then
                ret=0
        else
                echo "$prg: $pkg: check: fail"
                ret=1
        fi
        return $ret
}

# main
echo "$prg/$ver"
read -p "$msg"

# vpnc-script
pkg=vpnc-script
echo "$prg: $pkg..."
url=$url_vpncscript
chk=$chk_vpncscript
pre_vpnc="$pre/etc/vpnc"
err=0
echo "$prg: $pkg: mkdir..." \
&& mkdir -p $pre_vpnc \
&& cd $pre_vpnc \
&& echo "$prg: $pkg: fetch..." \
&& curl -O -# $url/$pkg \
&& echo "$prg: $pkg: check..." \
&& chk $pkg $chk \
&& echo "$prg: $pkg: chmod..." \
&& chmod a+x $pkg \
|| err=1
[ $err -gt 0 ] \
&& echo "$prg: $pkg: error" \
&& exit $err
read -p "$msg"

# default
export PATH="$PATH:$pre/bin:$pre/sbin"
for pkg in ${dep[*]}; do
        echo "$prg: $pkg..."
        eval ver='$'ver_$pkg
        eval url='$'url_$pkg
        eval chk='$'chk_$pkg
        eval tgz='$'tgz_$pkg
        eval cfg='$'cfg_$pkg
        eval opt='$'opt_$pkg
        # f*n dash
        [ "$pkg" == 'pkgconfig' ] \
        && pkg=pkg-config

        err=0
        cd $src \
        && pkg="$pkg-$ver" \
        && echo "$prg: $pkg: fetch..." \
        && curl -O -# $url/$pkg.$tgz \
        && echo "$prg: $pkg: check..." \
        && chk $pkg.$tgz $chk \
        && echo "$prg: $pkg: untar..." \
        && tar -xf $pkg.$tgz \
        && echo "$prg: $pkg: build..." \
        && cd $pkg \
        && echo "$prg: $pkg: build: conf..." \
        && ./$cfg --prefix=$pre $opt \
        && echo "$prg: $pkg: build: make..." \
        && make \
        && echo "$prg: $pkg: build: inst..." \
        && make install \
        && echo "$prg: $pkg: clean..." \
        && cd .. \
        && rm -rf $pkg* \
        || err=2

        [ $err -gt 0 ] \
        && echo "$prg: $pkg: error" \
        && exit $err
        read -p "$msg"
done
echo "$prg: enjoy"'!'

Контрольные суммы посчитанны с полученных через современный браузер файлов.

Не пользы окаянной ради, а токмо развлечения для) Всем *Мир*-Труд-Май!

Evenik ★★
() автор топика
Последнее исправление: Evenik (всего исправлений: 5)

Можно это починить не обновляя curl или openssl?

А тебе разово?

У curl сть флажок -k и он же --insecure, который по идее отключает проверку.

EXL ★★★★★
()
Ответ на: комментарий от EXL

А тебе разово?

Скорее всего никогда не пригодится.

У curl сть флажок -k и он же --insecure, который по идее отключает проверку.

Отключается проверка сертификатов, здесь другое.

Evenik ★★
() автор топика
Ответ на: комментарий от Evenik

ну, не все решают сами.
за россиян уже всё выбрали.

annerleen ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.