我遇到的问题是远程的接口证书更新了。
本地的缓存没有更新过来。
试了许多办法,没有解决。
最后,时间紧,在PHP代码上,对 curl 进行了操作绕过证书验证了。
使用CURL请求HTTPS地址时报:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
今天发现在使用亚马逊mws 的 SubmitFeed 接口做上传更新动作时发现程序返回报错:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
查询后发现原来是亚马逊mws服务器的SSL安全证书更新了,需要我们这边来更新ssl判别证书,更新之后问题解决。
在这边记录一下更新方式作为备录:
1、下载新的ssl本地的判别证书:
wget http://curl.haxx.se/ca/cacert.pem
2、更名为ca-bundle.crt放置到默认目录,替换旧的证书:
mv cacert.pem ca-bundle.crt
mv ca-bundle.crt /etc/pki/tls/certs/
----------------
另一种办法:
openssl ca -config /etc/openssl.cnf -policy policy_anything -out newcert.pem -infiles newreq.pem -startdate [now] -enddate [previous enddate+365days]
用正确的时间替换 [now]和[previous enddate+365days]。
5 证书的更新
当用户发送他旧的证书证书或要在原有私钥的基础上建新的证书,所以必须吊消旧的证书然后再签发新的证书。要找到证书,可以用户的DN(区别名)在 index.txt文件中查到序列号xx,用cert/<xx>.pem做为证书吊消的依据。你必须手动签发证书,因为开始时间和结束时间以 便确定新证书的有效性。
-----------------
参考:
http://blog.hillghost.info/post/54088559447/curl-https-error-14090086-ssl
http://wiki.ubuntu.org.cn/Openssl%E8%AF%81%E4%B9%A6%E7%AE%A1%E7%90%86