The following code returns Exit code 58.
From cURL documentation: CURLE_SSL_CERTPROBLEM (58) problem with the local client certificate.
// create a new CURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSLCERT, getcwd() . $CERT);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD,"XXXXX");
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content Type: text/xml',
'User-Agent: XXXXX',
'User-Name: XXXXX'
));
$RESPONSE = curl_exec($ch);
var_dump($RESPONSE);
// close CURL resource, and free up system resources
curl_close($ch);
Is there something I'm missing?
Make sure the file in getcwd() . $CERT
exists and is a valid PEM certificate. If it seems ok, set the following option to get more SSL certification details output to STDERR:
curl_setopt($ch, CURLOPT_CERTINFO, true);
Note that this setting only has effect if CURLOPT_VERBOSE
is set to true, which you already have.
problem with the local client certificate
hmm a bit vague. Seems to mean Curl doen't like the certificate, rather than the remote system doesn't like it. Is it in PEM format? Public and private keys in certificate? Readable by webserver uid?