使用PHP cURL固定证书
发布时间:2020-12-13 22:26:32 所属栏目:PHP教程 来源:网络整理
导读:我看到SO中有很多帖子,关于错误: SSL certificate problem: unable to get local issuer certificate 这是我得到的那个. 他们的所有答案都只是说下载根证书来自: https://curl.haxx.se/ca/cacert.pem 并设置为CURLOPT_CAINFO或设置php.ini的curl.cainfo.
我看到SO中有很多帖子,关于错误:
SSL certificate problem: unable to get local issuer certificate 这是我得到的那个. 他们的所有答案都只是说下载根证书来自: https://curl.haxx.se/ca/cacert.pem 并设置为CURLOPT_CAINFO或设置php.ini的curl.cainfo. 但这样做实际上只是告诉cURL信任根CA及其可信CA的列表. 根据我的理解,证书固定应该忽略所有这些根CA并且只信任特定提供商的单个证书. 修复此错误的正确方法是什么? $ch = curl_init($url); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); curl_setopt($ch,CURLOPT_CAINFO,'/etc/httpd/static.gc.apple.com.pem'); curl_setopt($ch,CURLOPT_CAPATH,'/etc/httpd/'); //curl_setopt($ch,CURLOPT_PINNEDPUBLICKEY,"sha256//TeyzGG/8dvpuksAeSCb3tsvLEHbY6w9q63tXhOIf0Tg="); $sslCertificate = curl_exec($ch); 我知道对于libcurl本身,它有一个选项“CURLOPT_PINNEDPUBLICKEY”,它完全符合我的需要,但目前PHP仍然不支持它…(它在PHP中没有这样的常量,我不知道实际值是什么常数) 解决方法
基本上问题是因为安装了来自Remi的yum的PHP本身没有使用支持它的curl和openssl编译. 所以我们必须更新curl,openssl,从源代码编译PHP并且它有效.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |