Facebook SDK вернул ошибку: установил сертификат проверки ошибок [duplicate]

Типы ссылок по умолчанию равны null, чтобы указать, что они не ссылаются на какой-либо объект. Следовательно, если вы попытаетесь получить доступ к объекту, на который ссылаетесь, а его нет, вы получите исключение NullReferenceException.

Для Ex:

SqlConnection connection = null;
connection.Open();

Когда вы запускаете это кода, вы получите:

System.NullReferenceException: Object reference not set to an instance of an object.

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

if (connection != null){
    connection.Open();
}

Примечание. Чтобы избежать этой ошибки, вы всегда должны инициализировать свои объекты прежде чем пытаться что-либо сделать с ними.

144
задан Josh 27 August 2010 в 23:00
поделиться

18 ответов

Эта ошибка связана с отсутствующим пакетом : 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-сертификатов в сжатии

49
ответ дан Ionică Bizău 27 August 2018 в 21:59
поделиться

Самый быстрый способ обойти ошибку - добавить параметр -k где-нибудь в вашем запросе на завивание. Этот параметр «позволяет подключаться к SSL-ссылкам без сертификатов». (from 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-сертификаты.

14
ответ дан 10gistic 27 August 2018 в 21:59
поделиться

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

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

4
ответ дан Daniel Stenberg 27 August 2018 в 21:59
поделиться

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

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

  1. Переименовать двоичный файл curl Anaconda :) mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda
  2. ИЛИ удалить Anaconda curl conda remove curl

$ which curl /usr/bin/curl

[0] Anaconda Ubuntu curl Github issue https://github.com/conda/conda-recipes/issues/352

9
ответ дан Harsha Manjunath 27 August 2018 в 21:59
поделиться

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

git config --global http.sslverify "false"
1
ответ дан J4cK 27 August 2018 в 21:59
поделиться

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

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

установка ошибки, проверяющая местоположения: CAfile: D: / git_repo / mingw32 / ssl / certs / ca-bundle .crt CApath: none

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

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

0
ответ дан Kanhaiya Kumar 27 August 2018 в 21:59
поделиться

Для 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 недостаточно для удаленного сайта, к которому я подключался, поэтому использовал тот, который указан с предварительно скомпилированной версией Windows curl 7.47.1 на http: // winampplugins. co.uk/curl/

5
ответ дан LJT 27 August 2018 в 21:59
поделиться

Из $ 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.
8
ответ дан Mark Fox 27 August 2018 в 21:59
поделиться

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

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

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

например

curl --insecure http://........
1
ответ дан meda 27 August 2018 в 21:59
поделиться

У меня также была установлена ​​самая новая версия 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:» в сообщении об ошибке.

133
ответ дан Nicolas Ivanov 27 August 2018 в 21:59
поделиться

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

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

3
ответ дан Opal 27 August 2018 в 21:59
поделиться

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

echo insecure >> ~/.curlrc
6
ответ дан Pablo R. Mier 27 August 2018 в 21:59
поделиться

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

cacert=/etc/ssl/certs/ca-certificates.crt
27
ответ дан prabeesh 27 August 2018 в 21:59
поделиться

Исправлено для меня:

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

0
ответ дан Reza Farshi 27 August 2018 в 21:59
поделиться

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

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

1
ответ дан roens 27 August 2018 в 21:59
поделиться

Ошибка связана с повреждением или отсутствием файлов сертификатов цепочки 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
0
ответ дан Santos L. Victor 27 August 2018 в 21:59
поделиться

У меня была такая же проблема. Как оказалось, мой файл /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 
1
ответ дан ShrimpPhaser 27 August 2018 в 21:59
поделиться

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

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

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

71
ответ дан Yauhen Yakimovich 27 August 2018 в 21:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: