有无证书的过期或者更新不及时问题,经常会在使用curl库创建请求时报60的错误。根本原因是在于服务器不承认目标服务器的证书导致(证书过期导致的更新证书就好), 只需要将目标服务器的公钥放到我们服务器的信任证书里就能解决问题。
处理办法(ubuntu):
- 在浏览器访问该网站,点击url旁边的小锁图标,寻找打开”证书“的窗口(不同的浏览器可能不一样),切换至证书路径选择网站的上一级证书(通常是服务器没有信任该级证书导致错误),点查看证书。这时又会弹出一个该证书的操作窗口,切换到详细信息后点击”复制到文件“,选择Base64编码导出。此时我们就拿到该证书的公钥信息。
- 将该上面拿到的公钥信息存进一个crt文件中,上传到服务器的/usr/local/share/ca-certificates目录, 执行 update-ca-certificates命令,此时就会在/etc/ssl/certs下面生成一个pem的软连接
- 再使用curl访问之前出错的网址,应该就能顺利访问了
- 如果要docker里面也能顺利访问出错的网址,可以将/usr/local/share/ca-certificates和/etc/ssl/certs都映射到php-fpm容器中