php curl 双向验证,php - 如何使用php curl进行相互/双向身份验证? - SO中文参考 - www.soinside.com...

该网站说“你没有使用数字证书进行身份验证,或者可能连接时间已过期。请再次使用您的数字证书进行身份验证。”

我每次都收到这条消息,所以不是连接时间到期,我认为我的身份验证尝试不起作用。

我这样做的方式是从一个pfx文件开始,然后用密码来打开它。我用openssl和pfx制作了pem证书。

码:

$pfx_path = 'me.pfx';

$pfx_pass = 'foopass123';

$pfx_values = [];

openssl_pkcs12_read(file_get_contents($pfx_path), $pfx_values, $pfx_pass);

$cert_path = 'me.pem';

file_put_contents($cert_path, $pfx_values['cert'] . "\n" . $pfx_values['pkey']);

$postfields = 'field1=val1&field2=val2&field3=val3';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL , 'https://www.example.com');

curl_setopt($ch, CURLOPT_POST , true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_POSTFIELDS , $postfields);

curl_setopt($ch, CURLOPT_SSLCERT , $cert_path);

curl_setopt($ch, CURLOPT_VERBOSE, 1);

$curl_result = curl_exec($ch);

$curl_info = curl_getinfo($ch);

curl_close($ch);

执行代码的结果(仅显示$ curl_result的HTML引用):

您未使用数字证书进行身份验证,或者连接时间可能已过期。使用数字证书再次验证。

顺便说一句,$curl_info['ssl_verify_result']是0,我想这意味着至少服务器已经正确认证。

编辑:删除CURLOPT_SSLCERTPASSWD,因为它没有必要,pfx文件已经打开密码,其私人和公钥被裸体放入$cert_path。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值