PHP 5.3中的默认CA证书位置
How can I find the default CA certificate locations used by PHP 5.3? In PHP 5.6 and above, there is the function openssl_get_cert_locations
that can answer this question. But what would be the equivalent in PHP 5.3?
如何找到PHP 5.3使用的默认CA证书位置? 在PHP 5.6及更高版本中,有一个函数 openssl_get_cert_locations code>可以回答这个问题。 但是PHP 5.3中的等价物是什么? p>
div>
As of PHP 5.6 it will automatically determine where your CA certificates are located. Ideally you should update to a newer version of PHP (7.1 would be a good target to upgrade to).
Here are the links to the specific RFCs which cover the topic in more depth and explain why and how the changes were made in PHP >= 5.6:
For anything before PHP 5.6 you'll need to manually specify them (either by locating them yourself and manually specifying them or download a prepackaged set from a source like https://curl.haxx.se/ca/cacert.pem and add it to your code repository).
Then manually specify it in your code like this:
// Using cURL
curl_setopt($curl, CURLOPT_CAINFO, 'path/to/cafile');
// or using file_get_contents
$context = stream_context_create([
'ssl' => [
'verify_peer' => true,
'cafile' => 'path/to/cafile',
'CN_match' => '[domain-you-are-contecting-to]'
]
]);
file_get_contents($url, false, $context);