Я вижу тонны почты в SO, об ошибке:сертификат Закрепление с PHP Curl
SSL certificate problem: unable to get local issuer certificate
И который является один я получаю.
Все их ответ просто говоря, скачать корневые сертификаты:
https://curl.haxx.se/ca/cacert.pem
И установка в CURLOPT_CAINFO или настройки php.ini-х curl.cainfo.
Но это на самом деле просто говорит cURL доверять списку корневого ЦС и доверенного ЦС.
С моей точки зрения, сертификат Pinning должен игнорировать все эти корневые ЦС и доверять только одному сертификату конкретного поставщика.
Каков правильный способ исправить эту ошибку?
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CAINFO, '/etc/httpd/static.gc.apple.com.pem');
curl_setopt($ch, CURLOPT_CAPATH, '/etc/httpd/');
//curl_setopt($ch, CURLOPT_PINNEDPUBLICKEY, "sha256//TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg=");
$sslCertificate = curl_exec($ch);
Я знаю, что для самого Libcurl, он имеет опцию «CURLOPT_PINNEDPUBLICKEY», который бы абсолютно то, что мне нужно, но в настоящее время PHP до сих пор не поддерживает его ... (это не такая константа в PHP и я не знаю, каково фактическое значение константы)
Всегда можно попробовать использовать целочисленное значение 'CURLOPT_PINNEDPUBLICKEY', определенное библиотекой curl, даже если PHP не предоставляет эквивалентную константу, проверьте [заголовок curl] (https://github.com/curl/curl/ blob/master/include/curl/curl.h) для значений. Убедитесь, что PHP использует версию cURL, которая поддерживала бы ее. – apokryfos
Чтобы следовать @ точке apokryfos'S, значение 'CURLOPT_PINNEDPUBLICKEY' 230, следовательно, попробуйте: ' curl_setopt ($ ч, 230, "sha256 // TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg ="); ' – Carey
@Carey Из того, что я прочитал в завиток заголовок, который опубликовал apokryfos, значение 10230. Поскольку STRINGPOINT - 10000. Но в любом случае это не сработало. Я не вижу никаких изменений после его применения, я могу подключиться к любому серверу https. Но я подтвердил, что версия cURL - 7.49.1, которая должна поддерживаться. И использование команды curl: curl --pinnedpubkey "sha256 // TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg =" --url https://google.ca также дал мне правильную ошибку. –