加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 带SSL证书的cURL失败:错误58无法设置私钥文件

发布时间:2020-12-13 18:16:48 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用cURL连接到远程主机.连接需要使用证书和受密码保护的私钥.到目前为止,我对以下代码不成功: ?php $wsdl = 'https://domain.com/?wsdl'; $certFile = getcwd() . '/auth/cert.pem'; $keyFile = getcwd() . '/auth/key.pem'; $password = 'pwd';
我正在尝试使用cURL连接到远程主机.连接需要使用证书和受密码保护的私钥.到目前为止,我对以下代码不成功:
<?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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读