curl调用微信退款No required SSL certificate was sent
前言
在之前的博客中提到微信证书到期了,需要更换,但是当我更换完证书自信满满的时候,却出现了两个问题,记录一下。
一、错误一
CURL Error: 58unable to load client key: -8178 (SEC_ERROR_BAD_KEY)
证书格式问题
-----BEGIN ENCRYPIED PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END ENCRYPIED PRIVATE KEY-----
修改为
-----BEGIN PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END PRIVATE KEY-----
二、错误二
curl post请求返回 400 No required SSL certificate was sent。意思就是没有将证书信息传给微信
<html>
<head><title>400 No required SSL certificate was sent</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>No required SSL certificate was sent</center>
<hr><center>nginx</center>
</body>
</html>
查看代码如下
if ($useCert) {curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);//设置证书//使用证书:cert 与 key 分别属于两个.pem文件curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');curl_setopt($ch, CURLOPT_SSLCERT, dirname(getcwd()) . '/data/cert/apiclient_cert.pem');curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');curl_setopt($ch, CURLOPT_SSLKEY, dirname(getcwd()) . '/data/cert/apiclient_key.pem');}
已明确两个文件路径正确,且可访问。
折腾了一早上,一直怀疑是配置问题,最后重启了容器解决,使用了apache作为部署服务器,进入到apache的安装目录,执行了重启命令,终于解决。
apachectl restart
总结
以上就今天的内容,欢迎点赞,收藏和关注。