Как мне работать с сертификатами, использующими cURL, при попытке доступа к URL-адресу HTTPS? - PullRequest
168 голосов
/ 01 июля 2010

Я получаю следующую ошибку при использовании curl:

curl: (77) error setting certificate verify locations:
  CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none

Как установить этот сертификат для проверки местоположения?Благодарю.

Ответы [ 22 ]

4 голосов
/ 08 октября 2014

curl выполняет SSL проверку сертификата по умолчанию, используя «связку» Certificate Authority (CA) открытых ключей (CA-сертификаты). По умолчанию пакет называется curl-ca-bundle.crt; Вы можете указать альтернативный файл используя опцию --cacert.

Если этот HTTPS сервер использует сертификат, подписанный ЦС, представленным в пакет, проверка сертификата, вероятно, не удалось из-за проблема с сертификатом (срок его действия истек, или имя может не совпадает с именем домена в URL).

Если вы хотите отключить проверку сертификата с помощью curl, используйте опция -k (или --insecure).

например

curl --insecure http://........
4 голосов
/ 02 июля 2010

Кажется, что ваш curl указывает на несуществующий файл с сертификатами CA или аналогичными.

Первичные ссылки на сертификаты CA с curl см .: https://curl.haxx.se/docs/sslcerts.html

2 голосов
/ 21 декабря 2016

У меня была точно такая же проблема.Как оказалось, мой файл /etc/ssl/certs/ca-certificates.crt был поврежден.Последняя запись показала что-то вроде этого:

-----BEGIN CERTIFICATE-----
MIIEDTCCAvWgAwIBAgIJAN..lots of certificate text....AwIBAgIJAN-----END CERTIFICATE-----

После добавления новой строки перед -----END CERTIFICATE-----, curl смог обработать файл сертификатов.

Это было очень неприятно, поскольку мой *Команда 1008 * не выдавала мне никаких предупреждений.

Это может быть, а может и не быть проблемой, связанной с версией curl, поэтому вот моя версия, просто для полноты:

curl --version
# curl 7.51.0 (x86_64-alpine-linux-musl) libcurl/7.51.0 OpenSSL/1.0.2j zlib/1.2.8 libssh2/1.7.0
# Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp 
# Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 
2 голосов
/ 10 декабря 2015

Что стоит, проверка which curl также важна.

Пользователь на общем компьютере, который я обслуживаю, получал эту ошибку.Но причина оказалась в том, что они установили Anaconda (http://continuum.io).. При этом бинарный путь Anaconda ставится перед стандартным $PATH, и он поставляется с собственным двоичным файлом curl, который не может найти значение по умолчанию.подтверждает, что были установлены на этом компьютере с Ubuntu.

1 голос
/ 18 марта 2019

Просто создайте папки, которых нет в вашей системе ..

/ и т.д. / ИПК / TLS / сертификаты /

и создайте файл, используя следующую команду,

sudo apt-get установить ca-сертификаты

, а затем скопируйте и вставьте сертификат в папку назначения, которая отображается в вашей ошибке. У меня было "with message 'error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none' in", убедитесь, что вы вставили файл в точное местоположение, указанное в ошибке. Используйте следующую команду для копирования вставки.

sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt

Исправлено.

1 голос
/ 12 января 2019

Если вы используете homebrew на macOS или linuxbrew в linux, попробуйте переустановить openssl и curl, выполнив следующие шаги из этой страницы .

Это сообщение об ошибке указывает на то, что curl не может установить безопасное соединение с использованием openssl. Переустановка openssl должна решить проблему. Чтобы временно использовать небезопасное соединение для curl и git для загрузки любых необходимых файлов, выполните:

echo insecure >> ~/.curlrc
git config --global http.sslVerify false

Затем установите или переустановите openssl и curl:

HOMEBREW_CURLRC=1 brew reinstall openssl curl

Наконец, отмените изменения безопасности, чтобы curl и git снова использовали безопасные соединения:

sed -i '/^insecure$/d' ~/.curlrc
git config --global http.sslVerify true

Возможно, вам потребуется запустить новый сеанс оболочки, чтобы проверить результат с помощью

curl -v https://github.com # or any other https urls.

Если в выводе отображается следующий вывод, проблема должна быть решена!

* successfully set certificate verify locations:
*   CAfile: /usr/local/etc/openssl/cert.pem
    CApath: /usr/local/etc/openssl/certs

Ссылки:

1 голос
/ 19 июня 2017

Запустите следующую команду в git bash, которая отлично работает для меня

git config --global http.sslverify "false"
0 голосов
/ 27 марта 2019

У меня была эта проблема, и оказалось, что моя версия CURL не может анализировать закодированные DER сертификаты (и не обращала внимания на параметр --cert-type)Когда я преобразовал сертификат в формат PEM, он работал.

0 голосов
/ 13 марта 2019

Ниже описываются шаги, чтобы исправить проблемы.1. Узнайте, что файл существует по определенному URL.2. Если нет, то загрузите файл с URL.https://curl.haxx.se/ca/cacert.pem
3. Скопируйте и вставьте файл по указанному пути в файле php.ini.4. Перезапустите сервис Apache.

0 голосов
/ 06 марта 2019

Я нашел это исправление простым и безопасным. Это просто включает в себя изменение пути двух значений в файле php.ini. Следуйте инструкциям здесь: https://ourcodeworld.com/articles/read/196/xampp-wampp-php-ssl-certificate-error-unable-to-get-local-issuer-certificate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...