php curl ssl 踩坑记录

最近一个星期在跟一个金融公司技术对接。对方系统使用ip白名单和ssl证书认证,请求端需要安装证书来达到双向验证,来保障系统API接口安全。

我们公司的目前线上三台机器A/B/C用作负载均衡,如果要正常访问他们系统,按照流程需要把这三台机器的公网ip添加到对方公司的api访问白名单中,然后我按照他们的方式将证书安装在我们三台服务器中。然后部署到线上进行测试发现,我三台服务器是用php curl扩展发起https请求的,只有C服务器能够正常访问对方公司接口,获取到正确的数据,其余两台只返回false,试了几次都一样的结果:只有C服务器正常返回,AB返回false

三台服务器发起请求的代码一样,为什么会导致不一样的结果呢

一开始想到的是,对方的白名单没把AB服务器ip添加好,然后就向对方再次确认ip白名单是否真的已经添加好了。对方再次确实是已经添加好了。那如果除了ip白名单,还有什么原因会导致这样的结果产生呢?

只能打印更加详细日志来分析了,我们使用curl_error和curl_errno来获取错误信息。

从日志上可以看出,not suported file type 'key' for certiflcate ,原来是curl不支持key格式的证书。所以将证书类型改为‘pem’格式即可

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容