HTTPS and SSL3_GET_SERVER_CERTIFICATE:certificate verify failed, CA is OK
It's a pretty common problem in Windows. You need just to set cacert.pem
to curl.cainfo
.
Since PHP 5.3.7 you could do:
- download https://curl.haxx.se/ca/cacert.pem and save it somewhere.
- update
php.ini
-- add curl.cainfo = "PATH_TO/cacert.pem"
Otherwise you will need to do the following for every cURL resource:
curl_setopt ($ch, CURLOPT_CAINFO, "PATH_TO/cacert.pem");
curl
used to include a list of accepted certificate authorities (CAs) but no longer bundles ANY CA certs since 7.18.1 and onwards. So by default it'll reject all TLS/SSL certificates as unverifiable.
You'll have to get your CA's root certificate and point curl at it. More details at curl's details on TLS/SSL certificates verification.
Warning: this can introduce security issues that SSL is designed to protect against, rendering your entire codebase insecure. It goes against every recommended practice.
But a really simple fix that worked for me was to call:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
before calling:
curl_exec():
in the php file.
I believe that this disables all verification of SSL certificates.