PHP 5.3 中的默认 CA 证书位置



如何找到 PHP 5.3 使用的默认 CA 证书位置?在 PHP 5.6 及更高版本中,有函数openssl_get_cert_locations可以回答这个问题。但是 PHP 5.3 中的等价物是什么?

从 PHP 5.6 开始,它将自动确定您的 CA 证书所在的位置。理想情况下,您应该更新到较新版本的 PHP(升级到 7.1 是一个很好的目标(。

以下是指向特定 RFC 的链接,这些 RFC 更深入地涵盖了该主题,并解释了在 PHP>= 5.6 中进行更改的原因和方式:

  • 公开协商值
  • TLS 对等验证

对于 PHP 5.6 之前的任何内容,您需要手动指定它们(通过自己找到它们并手动指定它们,或者从 https://curl.haxx.se/ca/cacert.pem 等源下载预打包的集合并将其添加到代码存储库中(。

然后在代码中手动指定它,如下所示:

// 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);

最新更新