Error setting certificate verify locations cafile etc pki tls certs ca bundle crt capath none

I did this I have curl configured to use both CApath and CAfile options. When ca-certificates.crt is valid, curl works. For testing, we deleted ca-certificates.crt. I expected the following After c...

I faced exactly with the same error in my own build of libcurl 7.67.0 linked against OpenSSL 1.1.1f built with my own config opts. Every try of making HTTPS connection fails with:

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

The problem was in no-stdio config opt, passed to ./config of OpenSSL, when i removed it error is gone.

Steps to reproduce (if somebody interested)

Using Ubuntu 16.04.7 LTS (i guess it’s not OS dependent, but i did all tests under 16.04.7), launch the following script to build curl with specified version of OpenSSL:

#!/bin/bash
curdir=$(pwd)
mkdir -p $curdir/depends
mkdir -p $curdir/res
cd $curdir/depends

version=1.1.1f
wget -qO- http://www.openssl.org/source/openssl-$version.tar.gz | tar xzv
cd openssl-$version
export CFLAGS=-fPIC
sed -i.old "s|"engines", "apps", "test"|"engines"|" Configure

./Configure no-shared no-stdio --prefix=${curdir}/res linux-x86_64
make -j1 build_libs libcrypto.pc libssl.pc openssl.pc
make install_sw

cd $curdir/depends
version=7.67.0
wget -qO- https://curl.haxx.se/download/curl-${version}.tar.gz | tar xzv
cd curl-${version}
PKG_CONFIG_LIBDIR="${curdir}/res/lib/pkgconfig" CPPFLAGS="-I${curdir}/res/include" LDFLAGS="-L${curdir}/res/lib" ./configure --prefix=${curdir}/res
make -j$(nproc)
make install

Test binary as:

./res/curl --verbose https://api.telegram.org

You will get something like:

*   Trying 149.154.167.220:443...
* TCP_NODELAY set
* Connected to api.telegram.org (149.154.167.220) port 443 (#0)
* ALPN, offering http/1.1
* error setting certificate verify locations:
  CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* Closing connection 0
curl: (77) error setting certificate verify locations:
  CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none

Now remove no-stdio config opt from build script and also remove depends and res folders and re-build.

Result will be:

* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
...
<html>
<head><title>302 Found</title></head>
<body>
<center><h1>302 Found</h1></center>
<hr><center>nginx/1.16.1</center>
</body>
</html>
* Connection #0 to host api.telegram.org left intact

So, no-stdio conf opt of OpenSSL somehow affect on set certificate verify locations. Spent few hours to understand the root of issue.

23 ответа

Эта ошибка связана с отсутствующим пакетом: ca-certificates. Установите его.

В Ubuntu Linux (и аналогичном дистрибутиве):

# apt-get install ca-certificates

В CygWin через Apt-Cyg

# apt-cyg install ca-certificates

В Arch Linux (малина Pi)

# pacman -S ca-certificates

В документации указано:

Этот пакет включает файлы PEM сертификатов CA, позволяющие приложениям на основе SSL проверять подлинность SSL-соединений.

Как видно по адресу: Debian — информация о пакете ca-сертификатов в сжатии

Rubens Mariuzzo
15 нояб. 2012, в 17:10

Поделиться

У меня также была установлена ​​самая новая версия ca-сертификатов, но все еще получалась ошибка:

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

Проблема заключалась в том, что завиток ожидал, что сертификат находится на пути /etc/pki/tls/certs/ca-bundle.crt, но не смог найти его, потому что он был на пути /etc/ssl/certs/ca-certificates.crt.

Копирование моего сертификата в ожидаемый пункт назначения, запустив

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

работал у меня. Вам нужно будет создать папки для целевого адресата, если они не существуют, запустив

sudo mkdir -p /etc/pki/tls/certs

При необходимости измените приведенную выше команду, чтобы имя файла назначения соответствовало пути, ожидаемому с помощью curl, т.е. замените /etc/pki/tls/certs/ca-bundle.crt на путь, следующий за «CAfile:» в сообщении об ошибке.

Scott Emmons
10 май 2015, в 18:50

Поделиться

Поместите это в свой .bashrc

# fix CURL certificates path
export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

(см. комментарий от Роберта)

Yauhen Yakimovich
25 июнь 2015, в 21:04

Поделиться

Создайте файл ~/.curlrc со следующим содержимым

cacert=/etc/ssl/certs/ca-certificates.crt

prabeesh
15 июль 2015, в 08:16

Поделиться

Самый быстрый способ обойти ошибку — добавить опцию -k где-нибудь в вашем запросе на завивание. Этот параметр «позволяет подключаться к SSL-ссылкам без сертификатов». (от curl —help)

Помните, что это может означать, что вы не разговариваете с конечной точкой, о которой вы думаете, поскольку они представляют сертификат, не подписанный CA, которому вы доверяете.

Например:

$ curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg

дал мне следующий ответ об ошибке:

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

Я добавил в -k:

curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg -k

и не появляется сообщение об ошибке. В качестве бонуса теперь у меня установлен apt-cyg. И ca-сертификаты.

10gistic
23 июнь 2013, в 23:43

Поделиться

@roens — это правильно. Это влияет на всех пользователей Anaconda, с нижеприведенной ошибкой
curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none

Обходной путь заключается в использовании зависания системы по умолчанию и избегать вовлечения с добавленной переменной Anaconda PATH. Вы можете либо

  • Переименуйте двоичный файл curl Anaconda:)
    mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda

  • ИЛИ удалить завиток Anaconda
    conda remove curl

$ which curl
/usr/bin/curl

[0] Anaconda Ubuntu curl Проблема Github https://github.com/conda/conda-recipes/issues/352

Harsha Manjunath
14 июнь 2016, в 08:39

Поделиться

От $ man curl:

--cert-type <type>
    (SSL) Tells curl what certificate type the provided  certificate
    is in. PEM, DER and ENG are recognized types.  If not specified,
    PEM is assumed.

    If this option is used several times, the last one will be used.

--cacert <CA certificate>
    (SSL) Tells curl to use the specified certificate file to verify
    the peer. The file may contain  multiple  CA  certificates.  The
    certificate(s)  must be in PEM format. Normally curl is built to
    use a default file for this, so this option is typically used to
    alter that default file.

Puri-iOS Developer
29 март 2012, в 13:45

Поделиться

Другой альтернативой для устранения этой проблемы является отключение проверки сертификата:

echo insecure >> ~/.curlrc

Pablo R. Mier
12 авг. 2015, в 16:00

Поделиться

Для PHP-кода, запущенного на XAMPP в Windows, я обнаружил, что мне нужно отредактировать php.ini, чтобы включить ниже

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = curl-ca-bundle.crt

а затем скопируйте в файл https://curl.haxx.se/ca/cacert.pem и переименуйте в curl-ca-bundle.crt и поместите его в путь xampp (I не смог заставить curl.capath работать). Я также обнаружил, что CAbundle на сайте cURL недостаточно для удаленного сайта, к которому я подключался, поэтому использовал тот, который указан с предварительно скомпилированной версией Windows curl 7.47.1 на http://winampplugins.co.uk/curl/

LJT
12 март 2016, в 11:32

Поделиться

Это сработало для меня

sudo apt-get install ca-certificates

затем перейдите в папку сертификатов в

sudo cd /etc/ssl/certs

то вы скопируете файл ca-certificates.crt в /etc/pki/tls/certs

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

если нет папки tls/certs: создайте ее и измените разрешения с помощью chmod 777 -R folderNAME

Kwame Yeboah
16 март 2015, в 12:56

Поделиться

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

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

Daniel Stenberg
01 июль 2010, в 22:57

Поделиться

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

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

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

Это было очень неприятно, потому что моя команда update-ca-certificates не давала мне предупреждения.

Это может быть или не быть проблемой, зависящей от версии 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 

ShrimpPhaser
21 дек. 2016, в 14:56

Поделиться

Для того, что стоит, проверка выполнения which curl также значительна.

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

roens
10 дек. 2015, в 20:21

Поделиться

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

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

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

например

curl --insecure http://........

meda
08 окт. 2014, в 16:48

Поделиться

Если вы используете 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

Рекомендации:

  • openssl: создайте файл cert.pem из сертификатов цепочки для ключей
  • curl: (77) ошибка установки сертификата проверки местоположения (похоже на дубликат)
  • Почему скручивание терпит неудачу?

Itachi
12 янв. 2019, в 13:46

Поделиться

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

git config --global http.sslverify "false"

J4cK
19 июнь 2017, в 18:38

Поделиться

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

Joshua Davies
27 март 2019, в 17:07

Поделиться

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

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

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

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

а затем скопируйте и вставьте сертификат в папку назначения, которая отображается в вашей ошибке. with message 'error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none' in » 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

Исправлена.

Manu R S
18 март 2019, в 08:05

Поделиться

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

tapas talukder
13 март 2019, в 10:36

Поделиться

Это исправлено для меня:

curl --remote-name --time-cond cacert.pem 
    https://curl.haxx.se/ca/cacert.pem

Reza Farshi
07 нояб. 2017, в 00:23

Поделиться

У меня такая же проблема.

Это была моя ошибка

  error setting ce                                                                     
  rtificate verify locations:
  CAfile: D:/git_repo/mingw32/ssl/certs/ca-bundle.crt
  CApath: none

Он отлично работает для меня

Я переименую имя установочного каталога git в git_repo «.

Kanhaiya Kumar
27 окт. 2017, в 21:32

Поделиться

Ошибка связана с повреждением или отсутствием файлов сертификатов цепочки SSL в каталоге PKI.
Вам нужно убедиться, что файлы ca-bundle, следуя шагам:
В консоли/терминале:

mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates

Введите этот сайт: https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificates, получите свой сертификат ca, для SO.
Скопируйте URL-адрес для загрузки и вставки URL-адреса:   wget your_url_donwload_ca-ceritificated.rpm
теперь установите yout rpm:

rpm2cpio your_url_donwload_ca-ceritificated.rpm | cpio -idmv

теперь перезапустите службу:
мой пример этой команды:

sudo service2 httpd restart

Santos L. Victor
29 июль 2016, в 16:07

Поделиться

Ещё вопросы

  • 0Curl возвращает все нормально, когда плохой ip передан CURLOPT_DNS_SERVERS
  • 1Как отобразить бизнес-слой на объекты модели в UML?
  • 1Pytest: приспособление с областью модуля в тестовом файле работает, но в conftest.py выдает ошибку
  • 1уменьшение двойного изображения int [] [] до меньшего размера
  • 1Есть ли способ изменить атрибуты узла карты сайта во время выполнения?
  • 0Javascript — цикл 3 функции с задержкой между каждой функцией
  • 1Перезапустить приложение с намерения
  • 0Создание сценариев HTML с использованием Visual Studio 2012 Express для Интернета
  • 0Однобайтовые коды символов
  • 1Функции Firebase — добавление нового значения к старому значению
  • 0изображение не отображается даже после преобразования в base64
  • 0Fancybox href с динамической ссылкой из базы данных (asp.net)
  • 1Таймер класс не работает
  • 0Часы JavaScript не отображаются правильно
  • 0как использовать POST вместо GET на typehead.js?
  • 0Перенос слов с помощью ng-bind-html
  • 1Двигатели, доступные для функции to_excel в пандах
  • 1ReentrantReadWriteLock limit
  • 0Отмените выделение выбранной области карты изображения при наведении на карту
  • 1Слияние адаптеров в Android
  • 0MySql: динамическое добавление столбцов, столько же строк, сколько в другой таблице
  • 1PyCharm на MacOS не может обрабатывать файлы
  • 0Выберите из поля, содержащего пробелы, используя MySQL
  • 0Как я могу передать данные изображения в контроллер и преобразовать в байты
  • 0jQuery вызов webAPI WebSecurity.IsAuthenticated всегда ложно
  • 0Использование 2 разных скриптов на одном и том же флажке
  • 0Неизвестный столбец при использовании псевдонима MySQL
  • 0Как мне установить 2 или более переключателей для каждой строки данных в таблице?
  • 0переменная сфера в угловой службе
  • 0Firefox семейства шрифтов дочерние элементы не наследуют, в то время как Chrome работает правильно
  • 0Компиляция программы на С ++ в Ubuntu
  • 0Как сделать несколько запросов в Spring Batch (в частности, используйте LAST_INSERT_ID ())
  • 1Null MultiPartConfig при создании GrizzlyHttpServer
  • 1Пользовательский формат-уменьшитель входного формата для Cassandra с использованием собственного протокола
  • 064-битные и 32-битные инструменты работают в одной среде
  • 0Загрузите HTML-страницу в фоновом режиме с помощью внедрения JavaScript
  • 1как я могу изменить приложение для Android, разработанное на платформе Android 2.2, на Android 1.6?
  • 0Развертывание приложения MEAN на Heroku дает ошибку H10 и статус 503
  • 0CORS XMLHttpRequest запрос источника и реферера
  • 0C ++ Linked List: узел внутри другого узла
  • 0CSS Layout: наложение элементов после вызова slideDown ()
  • 0Сравнение двух паролей с Jquery
  • 0Переключение содержимого на основе нажатия кнопки в представлении
  • 1RSA-шифрование с использованием блоков
  • 0Как я могу использовать данные в нг-если?
  • 1Включите цикл
  • 0Как мне установить класс на основе состояния дочернего элемента с Angular?
  • 0Как $ смотреть поле на заводе angularJS
  • 0Angular.js с PHP MVC (Codeigniter) путаницы
  • 0Неопределенная ссылка на _rpoly_ при связывании программы C ++ с библиотекой Fortran

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

curl: (77) ошибка настройки сертификата расположение проверки: CAfile: /etc/ssl/certs/ca-certificates.crt CApath: none

Как мне установить это место проверки сертификата? Спасибо.

20 ответы

Эта ошибка связана с недостающий пакет: ca-certificates. Установите его.

В Ubuntu Linux (и аналогичном дистрибутиве):

# apt-get install ca-certificates

В CygWin через Apt-Cyg

# apt-cyg install ca-certificates

В Arch Linux (Raspberry Pi)

# pacman -S ca-certificates

В документации говорится:

Этот пакет включает файлы PEM сертификатов CA, позволяющие приложениям на основе SSL проверять подлинность соединений SSL.

Как видно на: Debian — Подробная информация о CA-сертификатах пакета в squeeze

Создан 14 фев.

У меня также была установлена ​​новейшая версия CA-сертификатов, но по-прежнему возникала ошибка:

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

Проблема заключалась в том, что curl ожидал, что сертификат будет на пути /etc/pki/tls/certs/ca-bundle.crt но не мог найти, потому что он был на пути /etc/ssl/certs/ca-certificates.crt.

Копирование моего сертификата в ожидаемое место назначения, запустив

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

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

sudo mkdir -p /etc/pki/tls/certs

При необходимости измените указанную выше команду, чтобы имя файла назначения соответствовало пути, ожидаемому curl, т.е. замените /etc/pki/tls/certs/ca-bundle.crt с путем, следующим за «CAfile:» в сообщении об ошибке.

ответ дан 20 мая ’15, 14:05

Поместите это в свой .bashrc

# fix CURL certificates path
export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

(см. комментарий Роберта)

Создан 25 июн.

Создать файл ~/.curlrc со следующим содержанием

cacert=/etc/ssl/certs/ca-certificates.crt

следующее

echo "cacert=/etc/ssl/certs/ca-certificates.crt" >> ~/.curlrc

Создан 02 ноя.

Самый быстрый способ обойти ошибку — добавить параметр -k где-нибудь в запросе curl. Эта опция «разрешает соединения с SSL-сайтами без сертификатов». (от curl —help)

Имейте в виду, что это может означать, что вы не разговариваете с конечной точкой, которой вы считаете себя, поскольку они представляют сертификат, не подписанный центром сертификации, которому вы доверяете.

Например:

$ curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg

дал мне следующий ответ об ошибке:

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

Я добавил -k:

curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg -k

и нет сообщения об ошибке. В качестве бонуса теперь у меня установлен apt-cyg. И CA-сертификаты.

Создан 14 июля ’15, 19:07

@roens правильный. Это касается всех Анаконда пользователи, с ошибкой ниже
curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none

Обходной путь — использовать системный curl по умолчанию и избежать возиться с добавленной Anaconda PATH Переменная. Вы также можете

  1. Переименуйте бинарный файл Anaconda curl :)
    mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda

  2. OR удалить Anaconda curl
    conda remove curl

$ which curl
/usr/bin/curl

[0] Anaconda Ubuntu curl проблема с Github https://github.com/conda/conda-recipes/issues/352

Создан 14 июн.

от $ man curl:

--cert-type <type>
    (SSL) Tells curl what certificate type the provided  certificate
    is in. PEM, DER and ENG are recognized types.  If not specified,
    PEM is assumed.

    If this option is used several times, the last one will be used.

--cacert <CA certificate>
    (SSL) Tells curl to use the specified certificate file to verify
    the peer. The file may contain  multiple  CA  certificates.  The
    certificate(s)  must be in PEM format. Normally curl is built to
    use a default file for this, so this option is typically used to
    alter that default file.

ответ дан 04 мар ’14, в 19:03

Другой способ решить эту проблему — отключить проверку сертификата:

echo insecure >> ~/.curlrc

ответ дан 12 авг.

Для кода PHP, работающего на XAMPP в Windows, я обнаружил, что мне нужно отредактировать php.ini, чтобы включить нижеприведенное

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = curl-ca-bundle.crt

а затем скопируйте в файл https://curl.haxx.se/ca/cacert.pem и переименуйте в curl-ca-bundle.crt и поместите его по пути xampp (мне не удалось заставить работать curl.capath). Я также обнаружил, что CAbundle на сайте cURL недостаточно для удаленного сайта, к которому я подключаюсь, поэтому использовал тот, который указан с предварительно скомпилированной версией curl 7.47.1 для Windows по адресу http://winampplugins.co.uk/curl/

ответ дан 12 мар ’16, в 10:03

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

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

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

Это было очень неприятно, потому что я update-ca-certificates команда не дала мне никакого предупреждения.

Это может быть или не быть проблемой конкретной версии 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 

ответ дан 21 дек ’16, 13:12

Это сработало для меня

sudo apt-get install ca-certificates

затем перейдите в папку сертификатов по адресу

sudo cd /etc/ssl/certs

затем вы копируете файл ca-Certific.crt в /etc/pki/tls/certs

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

если нет папки tls / certs: создайте ее и измените разрешения с помощью chmod 777 -R имя папки

ответ дан 16 мар ’15, в 13:03

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

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

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

например

curl --insecure http://........

ответ дан 21 окт ’15, 02:10

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

Основные сведения о сертификатах CA с curl см. В следующих разделах: https://curl.haxx.se/docs/sslcerts.html

Создан 01 сен.

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

/ и т. д. / pki / tls / certs /

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

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

Исправлена.

ответ дан 18 мар ’19, в 06:03

Если у кого-то все еще возникают проблемы, попробуйте это, у меня это сработало. Удалите файлы в вашем /etc/ssl/certs/ каталог, затем переустановите ca-сертификаты:

sudo apt install ca-certificates --reinstall

Сделал это, когда я попытался установить Linuxbrew.

Создан 20 янв.

Для чего стоит проверить which curl тоже имеет значение.

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

ответ дан 17 мар ’16, в 19:03

У меня та же проблема: я создаю образ докера на основе alpine, и когда я хочу перейти на веб-сайт моей организации, появляется эта ошибка. Чтобы решить эту проблему, мне нужно получить сертификат CA моей компании, а затем добавить его в сертификаты CA моего изображения.

Получите сертификат CA

Используйте OpenSSL, чтобы получить сертификаты, относящиеся к сайту:

openssl s_client -showcerts -servername my.company.website.org -connect my.company.website.org:443

Это выведет что-то вроде:

CONNECTED(00000005)
depth=2 CN = UbisoftRootCA
verify error:num=19:self signed certificate in certificate chain
...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... 
-----END CERTIFICATE-----
...

Получите последний сертификат (содержимое между -----BEGIN CERTIFICATE----- и
-----END CERTIFICATE----- пометки включены) и сохраните его в файл (например, mycompanyRootCA.crt)

Создайте свой имидж

Затем, когда вы создадите образ докера из alpine, сделайте следующее:

FROM alpine
RUN apk add ca-certificates curl
COPY mycompanyRootCA.crt  /usr/local/share/ca-certificates/mycompanyRootCA.crt
RUN update-ca-certificates

Ваше изображение теперь будет работать правильно! o /

Создан 19 ноя.

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

git config --global http.sslverify "false"

Создан 19 июн.

Просто найдите, что это решение идеально подходит для меня.

echo 'cacert=/etc/ssl/certs/ca-certificates.crt' > ~/.curlrc

Я нашел это решение от здесь

ответ дан 17 апр.

У меня тоже была эта проблема. Моя проблема заключалась в этом файле:

/usr/ssl/certs/ca-bundle.crt

по умолчанию — это просто пустой файл. Таким образом, даже если он существует, вы все равно получите сообщение об ошибке, поскольку он не содержит сертификатов. Вы можете сгенерировать их так:

p11-kit extract --overwrite --format pem-bundle /usr/ssl/certs/ca-bundle.crt

https://github.com/msys2/MSYS2-packages/blob/master/ca-certificates/ca-certificates.install

ответ дан 26 окт ’20, 02:10

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

curl
https

or задайте свой вопрос.

Greetings,

I’m working on a fedora 30 server box and running into some trouble. I purchased a ssl certificate and have got that working for apache with no errors. However, dnf on my server stopped working, and it gives a curl error complaining about certs with the https/ssl component.

dnf -v update
Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync
DNF version: 4.2.5
cachedir: /var/cache/dnf
Unknown configuration value: failovermethod=priority in /etc/yum.repos.d/fedora-updates-modular.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /etc/yum.repos.d/fedora-updates-modular.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /etc/yum.repos.d/fedora-updates-modular.repo; Configuration: OptionBinding with id "failovermethod" does not exist
repo: downloading from remote: fedora-modular
error: Curl error (77): Problem with the SSL CA cert (path? access rights?) for https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-30&arch=x86_64 [error setting certificate verify locations:
  CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none] (https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-30&arch=x86_64).
Fedora Modular 30 - x86_64                      0.0  B/s |   0  B     00:00    
Cannot download 'https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-30&arch=x86_64': Cannot prepare internal mirrorlist: Curl error (77): Problem with the SSL CA cert (path? access rights?) for https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-30&arch=x86_64 [error setting certificate verify locations:
  CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none].
Failed to synchronize cache for repo 'fedora-modular'
Error: Failed to synchronize cache for repo 'fedora-modular'

Thanks to anyone that can help.

Понравилась статья? Поделить с друзьями:
  • Error setting aam
  • Error settime was not declared in this scope
  • Error setprecision was not declared in this scope
  • Error setlocale was not declared in this scope
  • Error setconsolecp was not declared in this scope