it-swarm.com.ru

Получение ошибки в Curl - Peer сертификат не может быть аутентифицирован с известными сертификатами CA

Я получаю приведенную ниже ошибку при создании ssl-соединения с самозаверяющим сертификатом . "Не удается аутентифицировать одноранговый сертификат с помощью известных сертификатов CA"

Он отлично работает с сертификатом, подписанным CA. Я устанавливаю ниже, используя curl_easy_setopt ().

curl_easy_setopt (MyContext, CURLOPT_CAPATH, CA_CERTIFICATE_PATH) curl_easy_setopt (MyContext, CURLOPT_SSL_VERIFYPEER, TRUE);

Скручиваемая версия
Libcurl-7.19.7-26

Версия Openssl - 0_9_8u.

Пожалуйста, дайте мне знать, как решить эту проблему.

8
user1345697

для php отключите проверку сертификата, например, curl. для curl_exec

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

http://php.net/manual/en/function.curl-setopt.php

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

7
zzapper

По умолчанию CURL обычно проверяет сертификат SSL, чтобы определить, действителен ли он и выдан ли принятый ЦС. Для этого curl использует набор сертификатов CA.

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

curl --noproxy -k \* -D - https://127.0.0.1:443/some-secure-endpoint
6
Mark Bonano

Мы исправили аналогичную проблему в CentOS 6, обновив curl до последней версии, доступной в стандартных репозиториях, и установив новейший пакет ca-Certificates:

yum update curl
yum install ca-certificates
3
Arth

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

Если вы связываетесь с серверами HTTPS или FTPS, используя сертификаты Подписанные центрами сертификации, присутствующими в комплекте, вы можете быть уверены, что удаленный сервер Действительно тот, на который он претендует.

До 7.18.0, curl упаковывал сильно устаревший файл ca ca bundle, который был установлен по умолчанию В эти дни архивы локонов не содержат сертификатов в All. Вы должны получить их в другом месте. Смотрите ниже, например.

Для получения дополнительной информации о проверке сертификата Peer SSL посетите http://curl.haxx.se/docs/sslcerts.html

2
user1671192

Хотя эта ошибка произошла в случае использования git clone, а не использования curl, я недавно наткнулся на идентичное сообщение об ошибке: 

Одноранговый сертификат не может быть аутентифицирован с помощью известных сертификатов CA

Подобно выводы Арта , то, что работало для CentOS 6 (для успешного использования URL-адресов HTTPS с git clone для связанных репозиториев GitLab), включало обновление доверенных сертификатов на сервере (т. Е. сервер, использующий HTTPS), используя следующие шаги :

  1. Sudo yum install ca-certificates
  2. Sudo update-ca-trust enable
  3. Sudo cp /path/to/your_new_cert.crt /etc/pki/ca-trust/source/anchors/
  4. Sudo update-ca-trust extract

Возможно, те же самые шаги сертификата могут быть применены для случая curl(или других подобных сценариев) для пользователей на CentOS в будущем.

1
summea

В 'C' 

curl_easy_setopt (curl_handle, CURLOPT_SSL_VERIFYPEER, 0);

работал на меня

0
Leo smith