2016-06-28 4 views
4

:인증서 피닝와 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에서 (가없는 ... 그런 상수를을 지원하지 않는 내가있다 어떤 상상의 실제 값이 무엇인지 전혀 모른다)

+0

PHP가 상응하는 상수를 제공하지 않아도 항상 curl 라이브러리에 정의 된대로 'CURLOPT_PINNEDPUBLICKEY'의 정수 값을 사용해 볼 수 있습니다. [curl header] (https://github.com/curl/curl/)를 확인하십시오. blob/master/include/curl/curl.h)를 호출합니다. PHP가 지원하는 cURL 버전을 사용하고 있는지 확인하십시오. apokryfos의 관점 @ 따르 – apokryfos

+0

, CURLOPT_PINNEDPUBLICKEY''의 값은 따라서 시도, 230이다 : 'curl_setopt ($ ch를, (230), "SHA256 // TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg =");' – Carey

+0

@Carey 나는 컬에서 읽은 바로는 헤더가 apokryfos 게시 된 경우 값은 10230입니다. STRINGPOINT는 10000입니다. 그러나 어느 쪽이든, 그것은 효과가 없습니다. 적용 후 변경 사항이 표시되지 않으며 모든 https 서버에 연결할 수 있습니다. 그러나 cURL 버전은 7.49.1이며 지원되어야합니다. curl -pinnedpubkey "sha256 // TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg ="--url https://google.ca를 사용하면 적절한 오류도 발생합니다. –

답변

0

기본적으로 문제는 Remi에서 yum으로 설치 한 PHP 자체가 curl로 컴파일되지 않았고 지원하는 openssl로 컴파일되지 않았기 때문입니다. 그래서 curl, openssl을 업데이트하고 소스에서 PHP를 컴파일해야합니다.

+0

curl 7.50.1로 작성된 컬 확장자를 가진 최신 PHP (7.0.11)로도 이것을 시도했습니다. 인증서 고정에 대한 지원이 이제 빌드되므로 CURLOPT_PINNEDPUBLICKEY가 정의되어 있지만 (10230) 인증서 고정을 설정하더라도 여전히 동일한 'Got error 60 - SSL certificate problem : local issuer certificate를 얻을 수 없습니다. 'witout pinning set으로 오류가 발생했습니다. 지문이 틀리면 특정 '컬 : (90) SSL : 공개 키가 고정 된 공개 키와 일치하지 않습니다!'오류가 발생하지 않아야합니까? – hpuiu