Почему мы получаем сообщение «Ошибка рукопожатия tls при использовании curl»? - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь использовать curl для доступа к URL-адресу приложения, которое мы разработали для себя, и на сервере, который я вижу

http: TLS handshake error from 1.2.3.4 remote error: tls: unknown certificate authority.

Это происходит, только когда мы достигаем конечной точки, используя curl (внутри git bash) или wget. Когда мы используем IE на Windows, он работает просто отлично. Я даже пытался переустановить git bash с использованием библиотеки Native SSL (которая должна быть такой же, как в IE), но все равно получал то же сообщение об ошибке.

Даже пытались загрузить файл curl-ca-bundle.crt и сохранить его в том же месте, где находится бинарный файл curl, или даже прямо сказать ему использовать этот файл с параметром curl --cacert, но все равно не радуйтесь.

Я сравнил корневые сертификаты, о которых сообщает IE, и те, что в этом curl-ca-bundle.crt, и они выглядят одинаково (они не совпадают в точности, но имеют одинаковый текст в между маркерами BEGIN и END, один из них шире на экране и поэтому использует меньше строк, если это имеет смысл).

Надеюсь, у кого-то есть идеи, что попробовать дальше, так как двое из нас этим весь день рвали волосы.

wget также выдает сообщение об ошибке: -

$ wget https://bler.com/admin/user --2018-09-03 15:53:43-- https://bler.com/admin/user Connecting to 132.146.1.142:8090... connected. ERROR: cannot verify oss.dns.networks.bt.com's certificate, issued by 'CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US': Unable to locally verify the issuer's authority. To connect to oss.dns.networks.bt.com insecurely, use '--no-check-certificate'.

Мы используем локальный прокси-сервер, и HTTP_PROXY установлен. Он должен использовать прокси, как мы видим, мы достигли конечной точки.

1 Ответ

0 голосов
/ 03 июля 2019

У меня тоже была такая же ошибка. Эта проблема возникает при установке на веб-сервере Golang единственного сертификата. Вместо этого вы должны использовать цепочку сертификатов.

Например, Letsencrypt дает "cert.pem" и "fullchain.pem". «cert.pem» работает в браузерах, но curl не может работать с этим файлом (curl: (60) Проблема с сертификатом SSL: невозможно получить сертификат локального эмитента). "fullchain.pem" отлично работает в браузерах и curl.

...