-
Notifications
You must be signed in to change notification settings - Fork 771
Steps for troubleshooting CA file issues
Thanet Knack Praneenararat edited this page Dec 6, 2017
·
5 revisions
If this library can't find a CA bundle on your system, you'll get an error message similar to this:
cURL error 60: SSL certificate problem: unable to get local issuer certificate.
CA file issues can also cause an error like this:
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL:
Couldn't load from
'https://adwords.google.com/api/adwords/cm/v201710/CampaignService?wsdl' :
failed to load external entity
"https://adwords.google.com/api/adwords/cm/v201710/CampaignService?wsdl
To remedy, try these steps:
- Check if you have CA files in your system:
- For Red Hat, CentOS and Fedora, the path to the CA file provided by the ca-certificates
package is usually
/etc/pki/tls/certs/ca-bundle.crt. - For Ubuntu and Debian, the path to the CA file provided by the ca-certificates
package is usually
/etc/ssl/certs/ca-certificates.crt. - For FreeBSD, the path to the CA file provided by the ca_root_nss package is usually
/usr/local/share/certs/ca-root-nss.crt. - For OS X, the path to the CA file provided by Homebrew is usually
/usr/local/etc/openssl/cert.pem. - For Windows, the path to the CA file is usually either
C:\windows\system32\curl-ca-bundle.crtorC:\windows\curl-ca-bundle.crt.- For 32-bit Windows 7, all requests to
C:\windows\system32\is redirected toC:\Windows\SysWOW64, so you probably need to check there instead. See this post for detailed explanation.
- For 32-bit Windows 7, all requests to
- For Red Hat, CentOS and Fedora, the path to the CA file provided by the ca-certificates
package is usually
- If you don't have any CA files in your system, download one from curl's
website and put it in either the
default path above (recommended) or your usual place for them.
- For Windows, rename the downloaded file to
curl-ca-bundle.crt.
- For Windows, rename the downloaded file to
- If you have a valid CA file, but it doesn't work or seems to not be read by the
library, try one of these procedures:
- Explicitly set your PHP ini file's
openssl.cafileorcurl.cainfoto the path of your CA file. - Manually specify your SSL CA file location with SoapSettinsBuilder's
withSslCaFile(). - Set
disableSslVerify()totrue. This should be avoided unless necessary since disabling SSL verification can compromise your account.$oAuth2Credential = (new OAuth2TokenBuilder()) ->fromFile() ->build(); $soapSettings = (new SoapSettingsBuilder()) ->disableSslVerify() ->build(); $session = (new AdWordsSessionBuilder()) ->fromFile() ->withSoapSettings($soapSettings) ->withOAuth2Credential($oAuth2Credential) ->build();
- Explicitly set your PHP ini file's