php curl ssl проверить - PullRequest
       6

php curl ssl проверить

0 голосов
/ 14 сентября 2018

Я только что разработал некоторое программное обеспечение с помощью php , используйте curllib для подключения amazon , PayPal , wechat , Я хочу проверить сертификат и нахожу некоторые параметры, относящиеся к этому:

CURLOPT_SSL_VERIFYPEER: думаю, если вы хотитечтобы проверить ssl-сертификат, этот параметр должен установить значение true ;

, но я не совсем понимаю, что такое CURLOPT_CAINFO и

curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT, $sslCertPath);
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY, $sslKeyPath); 

, когда мне следует установить CURLOPT_CAINFO, а когда установить, следовать 4 параметрам?

Я думаю, CURLOPT_CAINFO - это параметр, который гарантирует, что amazon - это амазонка, paypal - это paypal;

следующие 4 параметра - это подтверждение того, что я настоящий я, амазонка можетподтвердите эти 4 параметра.

Я прав?

и я не знаю, как получить CURLOPT_CAINFO ca? потому что я думаю, что если я подтверждаю, что амазонка - амазонка, я просто проверяюДостаточно, чтобы мне послал амазонка, зачем мне посылать амазонку?

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Обычно, когда вы получаете сертификат с веб-сайта - он содержит собственный сертификат веб-сайта плюс промежуточный сертификат (тот, который подписал / выдал сертификат веб-сайта).Чтобы проверить их оба, у вас должен быть список корневых сертификатов (CA - аббревиатура от центра сертификации), который называется «CA bundle» и обычно находится на /etc/ssl/certs/ca-bundle.crt.Промежуточный сертификат (может быть более одного промежуточного сертификата - каждый из них будет / должен быть подписан следующим в цепочке) должен быть подписан корневым сертификатом для доверия.

Итакцель CURLOPT_CAINFO состоит в том, чтобы позволить вам указать путь к ca-bundle.crt, если он не может быть автоматически найден cURL - или если вы хотите проверить свои собственные корневые сертификаты (сертификаты).

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

Цель CURLOPT_SSL_VERIFYPEER состоит в том, чтобы вы могли заставить cURL пропустить проверку сертификата сервера - в случае, если ваш комплект CA не обновлен или отсутствует ввсе.

0 голосов
/ 14 сентября 2018

Итак, после загрузки этого файла cacert.pem в ваш проект, в PHP вы теперь можете сделать это:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem");

В качестве альтернативы, это можно установить глобально, добавив следующее в ваш php.ini

curl.cainfo=/path/to/cacert.pem

Надеюсь, это поможет вам.

0 голосов
/ 14 сентября 2018

Попробуйте, если хотите использовать CURLOPT_SSL_VERIFYPEER:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . '/cacert.pem');

Скачать cacert.pem здесь https://curl.haxx.se/docs/caextract.html

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