2016-06-28 20 views
4

私は、エラーについてのSOでのポストのトンに、そこにある参照してください。証明書ピンニング

SSL certificate problem: unable to get local issuer certificate 

そして、私は取得しています一つです。

その答えのすべてがちょうどからダウンロードルート証明書を言っている:

https://curl.haxx.se/ca/cacert.pem

そして、CURLOPT_CAPATHまたは設定php.iniののcurl.cainfoに設定します。

しかし実際には、cURLにルートCAと信頼できるCAのリストを信頼するように伝えるだけです。

私の理解では、証明書のピン割り当てはこれらのルート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

+0

apokryfosのポイント@従うために、CURLOPT_PINNEDPUBLICKEY' 'の値が故にしようと、230です: 'ますcurl_setopt($ chを、230、 "SHA256 // TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg ="); ' – Carey

+0

@Carey私はカールに読んだから、ヘッダはapokryfosが投稿したもので、値は10230です。STRINGPOINTは10000です。しかしいずれにしても、うまくいきません。私はそれを適用した後に変更が表示されない、私は任意のhttpsサーバーに接続することができます。しかし、私はcURLのバージョンが7.49.1であることを確認しました。これはサポートする必要があります。 curl:curl --pinnedpubkey "sha256 // TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg =" --url https://google.caを使用すると、私にも適切なエラーが表示されます。 –

答えて

0

基本的に問題は、RemiのyumでインストールされたPHP自体がカールとそれをサポートするopensslでコンパイルされなかったためです。 したがって、curl、opensslを更新し、PHPをソースからコンパイルしなければなりませんでした。

+0

curl 7.50.1で構築されたカール拡張機能を備えた最新のPHP(7.0.11)でもこれを試しました。証明書を固定するサポートが組み込まれているので、CURLOPT_PINNEDPUBLICKEYが定義されています(10230)。しかし、私が証明書の固定を設定したとしても、同じエラーが表示されます60 - SSL証明書の問題:ローカル発行者証明書を取得できません'ウィットアウトピニングセットとしてのエラー。フィンガープリントが間違っていると、特定の 'curl:(90)SSL:公開鍵が固定された公開鍵と一致しません! 'というエラーを受け取るべきではありませんか? – hpuiu