:인증서 피닝와 PHP 컬 내가 거기 게시물의 톤 SO에 대한 오류가 표시
SSL certificate problem: unable to get local issuer certificate
그리고있는 나는 점점 오전 하나입니다.
는 대답의 모든 단지에서 다운로드 루트 인증서를 말하고있다 :https://curl.haxx.se/ca/cacert.pem
그리고 CURLOPT_CAINFO로 설정하거나 curl.cainfo의 php.ini의 설정.
하지만 이것은 실제로 루트 CA와 신뢰할 수있는 CA 목록을 신뢰하도록 cURL에 알리는 것입니다.
내 이해에서 인증서 고정은 이러한 루트 CA를 모두 무시하고 특정 공급자의 단일 인증서를 신뢰해야합니다.
이 오류를 수정하는 올바른 방법은 무엇입니까? 내가 libcurl에 자체 알
$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);
, 그것은 내가 필요로 절대적 않는 어떤 옵션 "CURLOPT_PINNEDPUBLICKEY"을 가지고 있지만, 현재 PHP는 여전히 PHP에서 (가없는 ... 그런 상수를을 지원하지 않는 내가있다 어떤 상상의 실제 값이 무엇인지 전혀 모른다)
PHP가 상응하는 상수를 제공하지 않아도 항상 curl 라이브러리에 정의 된대로 'CURLOPT_PINNEDPUBLICKEY'의 정수 값을 사용해 볼 수 있습니다. [curl header] (https://github.com/curl/curl/)를 확인하십시오. blob/master/include/curl/curl.h)를 호출합니다. PHP가 지원하는 cURL 버전을 사용하고 있는지 확인하십시오. apokryfos의 관점 @ 따르 – apokryfos
, CURLOPT_PINNEDPUBLICKEY''의 값은 따라서 시도, 230이다 : 'curl_setopt ($ ch를, (230), "SHA256 // TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg =");' – Carey
@Carey 나는 컬에서 읽은 바로는 헤더가 apokryfos 게시 된 경우 값은 10230입니다. STRINGPOINT는 10000입니다. 그러나 어느 쪽이든, 그것은 효과가 없습니다. 적용 후 변경 사항이 표시되지 않으며 모든 https 서버에 연결할 수 있습니다. 그러나 cURL 버전은 7.49.1이며 지원되어야합니다. curl -pinnedpubkey "sha256 // TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg ="--url https://google.ca를 사용하면 적절한 오류도 발생합니다. –