内容と意味:
次のコードは、セキュリティ証明書が正しいことを確認しないようにcURLに指示します。したがって、エラーは消えます。
$opts[CURLOPT_SSL_VERIFYPEER] = false;
$opts[CURLOPT_SSL_VERIFYHOST] = 2;
SSLを使用してリモートサーバーに接続すると、証明書が無効であるか、有効期限が切れているか、認識されたCAによって署名されていない可能性があります。通常、cURLはそれをチェックします。
CURLOPT_SSL_VERIFYHOST:
- 1:SSLピア証明書に共通名が存在するかどうかを確認します。
- 2:共通名の存在を確認し、指定されたホスト名と一致することも確認します。
CURLOPT_SSL_VERIFYPEER: FALSEを指定すると、CURLによるピアの証明書の検証が停止されます。検証する代替証明書は、CURLOPT_CAINFOオプションを使用して指定するか、証明書ディレクトリをオプションを使用して指定できCURLOPT_CAPATH
ます。CURLOPT_SSL_VERIFYPEERが無効になっている場合(デフォルトは2)、CURLOPT_SSL_VERIFYHOSTもTRUEまたはFALSEである必要があります。
正しく有効化および検証する方法:
正しく検証するには、提示された証明書が実際に有効であることを検証する必要があります。これを行うには、妥当な*信頼できる証明書と比較します。
リモートリソースがVerisignやGeoTrustなどのメインCAのいずれかによって発行された証明書によって保護されている場合は、http://curl.haxx.se/docs/caextractから取得できるMozillaのCA証明書バンドルと安全に比較できます。 .html
サーバーのどこかにファイルcacert.pemを保存し、スクリプトで次のオプションを設定します。
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt ($ch, CURLOPT_CAINFO, "pathto/cacert.pem");
自己署名証明書で保護されているリソースに接続している場合は、PEM形式の証明書のコピーを取得し、それを上記の段落のcacert.pemに追加するだけです。