脚本宝典收集整理的这篇文章主要介绍了php – 带SSL证书的cURL失败:错误58无法设置私钥文件,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
<?PHP $wsdl = 'https://domain.COM/?wsdl'; $certFile = getcwd() . '/auth/cert.PEm'; $keyFile = getcwd() . '/auth/key.pem'; $password = 'pwd'; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$wsdl); curl_setopt($ch,CURLOPT_SSLCERT,$certFile); curl_setopt($ch,CURLOPT_SSLKEYpasswd,$password); curl_setopt($ch,CURLOPT_SSLKEY,$keyFile); #curl_setopt($ch,CURLOPT_FRESH_CONNECT,true); #curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); #curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); $output = curl_exec($ch); var_dump(curl_errno($ch)); VAR_dump(curl_error($ch));
我一直得到的结果是错误58:无法设置私钥文件:’/ home /…/domains/…/public_htML/auth/key.pem’类型PEM.
到目前为止我尝试过的事情:
>检查密钥文件是否可读,如下所示:Unable to use libcurl to access a site requiring client authentication.尝试通过openssl_PRivate_key()传递文件为我提供了资源,而不是布尔值.所以这看起来不错.
>按照此处的建议切换key.pem文件中内容的顺序:Unable to use libcurl to access a site requiring client authentication.到目前为止没有运气.
>使用其他一些选项,如SLL_VERIFY_PEER,SSL_VERIFY_HOST,SSL_CERTTYPE和其他选项,这些选项在官方PHP文档中似乎微不足道.到目前为止没有运气.
我很确定问题在于我的配置,但我不确定在哪里看.
我使用Openssl CLI程序将.p12密钥文件转换为.pem密钥文件.诀窍在于转换的方式.
首先,我使用此命令转换它,我遇到了问题中描述的问题:
openssl pkcs12 -in key.p12 -out key.pem -nodes -clcerts
虽然下面的命令做了实际的伎俩:
openssl pkcs12 -in key.p12 -out key.pem -clcerts
有关详细信息,请参阅我使用的来源:https://community.qualys.com/docs/DOC-3273
以上是脚本宝典为你收集整理的php – 带SSL证书的cURL失败:错误58无法设置私钥文件全部内容,希望文章能够帮你解决php – 带SSL证书的cURL失败:错误58无法设置私钥文件所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。