php - cURL PHP 和 SSL CA 证书问题
问题描述
我无法在下面的 PHP 代码中使用 CA 证书
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, true );
curl_setopt($curl,CURLOPT_CAINFO, __DIR__.'/my-cert.cer' );
curl_setopt($curl, CURLOPT_CAPATH, __DIR__.'/my-cert.cer');
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
$curl_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$curl_error = curl_error($curl);
curl_close($curl);
}
curl_close($curl);
$decoded = json_decode($curl_response);
print_r($decoded);
它总是抛出一个错误
SSL CA 证书有问题(路径?访问权限?)
我查看了其他类似的问题,但所有这些问题都指向/etc/pki/tls/certs
未仅针对该代码指定证书。
附言
我已经注释掉了
curl_setopt($curl, CURLOPT_CAPATH, __DIR__.'/var/www/html/my-cert.cer');
现在得到那个错误:
TLS 握手出错,正在尝试 SSLv3...
PS2。
它必须与 NSS 相关,因为我已更新到 nss-3.36.0-9.el6_10.x86_64 并使其工作,但随后部分 Web 应用程序停止正常工作。
解决方案
推荐阅读
- python - 使用 Python 和正则表达式删除数组初始化代码
- sql - 从不同服务器上的表中更新数据
- android - Cordova Android 在运行时以编程方式设置 windowBackground
- c++ - 未安装的包上的 CMake“find_package”命令意外成功
- jquery - 使用 $.load() 时如何等待所有脚本加载?
- c# - 如何使用 JSON 填充 ObservableCollection?
- javascript - 不同的元素正在接收点击,即使 Xpath 是正确且唯一的(量角器)
- prolog - 如何将动态谓词的更改永久保存到 .pl 文件?(Tau 序言)
- c# - 如何使用 for 创建球形瓷砖地形?
- c - 有没有办法在 C 预处理器中执行任意代码?