I have a script in PHP that does a curl request to a webservice. The request is made from my server that has an SSL installed and the webservice I send request too has also an SSL.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://webservice.com?wsdl");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60000);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//My post data
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, "../cacerts.pem");
curl_setopt($ch, CURLOPT_CAPATH, "../cacerts.pem");
$headers = [];
array_push($headers, 'Content-Type: text/xml;charset=UTF-8');
array_push($headers, 'SoapAction: *');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$content = trim(curl_exec($ch));
var_dump($content);
var_dump(curl_getinfo($ch));
var_dump(curl_errno($ch));
var_dump(curl_error($ch));
curl_close($ch);
The debug info I get is as bellow:
array (size=26)
'url' => string 'https://webservice.com?wsdl' (length=42)
'content_type' => string 'text/xml;charset=utf-8' (length=22)
'http_code' => int 200
'header_size' => int 165
'request_size' => int 901
'filetime' => int -1
'ssl_verify_result' => int 0
'redirect_count' => int 0
'total_time' => float 1.469
'namelookup_time' => float 0.25
'connect_time' => float 0.688
'pretransfer_time' => float 1.188
'size_upload' => float 632
'size_download' => float 536
'speed_download' => float 364
'speed_upload' => float 430
'download_content_length' => float 536
'upload_content_length' => float 632
'starttransfer_time' => float 1.469
'redirect_time' => float 0
'redirect_url' => string '' (length=0)
'primary_ip' => string 'xxx.xxx.xxx.xxx' (length=15)
'certinfo' =>
array (size=0)
empty
'primary_port' => int 443
'local_ip' => string 'xx.xx.xx.x' (length=10)
'local_port' => int 61993
Is it normal that the "certinfo" is an empty array? If not why is it empty. Thanks.
You may need to set the following option to have "certinfo" populated
curl_setopt($ch, CURLOPT_CERTINFO, 1);