Проблема с сертификатом SSL: невозможно получить сертификат локального эмитента

Я создаю файл php-curl для доступа к API с другого сервера:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://192.168.4.2/sdk_service/rest/users/login/v1.1');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
// curl_setopt($ch, CURLOPT_CAINFO, "C:/xampp/htdocs/curl/cibinong/cacert.pem");
// curl_setopt($ch, CURLOPT_CAPATH, "C:/xampp/htdocs/curl/cibinong/");
$result = curl_exec($ch);
if (curl_error($ch)) {
echo curl_error($ch);
}
print_r($result);

Я получил сообщение об ошибке:

Проблема с сертификатом SSL: невозможно получить сертификат локального эмитента

Помоги мне, может быть, я что-то пропустил?

0

Решение

Проблема в том, что вы получаете недействительный сертификат SSL, вам необходимо отключить некоторые проверки. Можете ли вы попробовать это со следующими параметрами?

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

Это пропустит проверку хоста SSL и SSL-партнера. Потому что это то, что вам нужно в этом случае.

0

Другие решения

Вы получаете доступ к URL-адресу HTTPS с помощью IP-адреса, который на самом деле очень редко работает. Большинство сайтов требуют, чтобы имя SNI использовалось для получения правильного сертификата сервера, и многие центры сертификации даже не продают вам сертификаты для простых IP-адресов.

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

Если вы действительно хотите подключиться к этому конкретному IP-адресу и по-прежнему использовать правильное имя в URL, вы можете сделать это с помощью CURLOPT_RESOLVE вариант. Документировано среди других вариантов CURL.

Не соглашайтесь с отключением проверки сертификата. Это плохой обходной путь, который только рискует остаться навсегда и сделает вас уязвимым.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector