私は、エラーについての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で、このような定数を持っていないと私は持っています
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:curl --pinnedpubkey "sha256 // TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg =" --url https://google.caを使用すると、私にも適切なエラーが表示されます。 –