Cloudflare R2上传图片(PutObject)报错: cURL error 60: SSL certificate problem
报错详细:
fecify系统,配置了cloudflare R2, 上传图片报错:
Error executing "PutObject" on "https://e488ac21685b86cb422f4ad37a608b05.r2.cloudflarestorage.com/cdn/common/0/image/2024/07/04/f32acc2ca8508a61ce0b1917e22d0425.png"; AWS HTTP error: cURL error 60: SSL certificate problem: certificate has expired (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://e488ac21685b86cb422f4ad37a608b05.r2.cloudflarestorage.com/cdn/common/0/image/2024/07/04/f32acc2ca8508a61ce0b1917e22d0425.png
客户的操作系统是debian-11 (ovh的debian 11),经过最终的排查,发现问题是操作系统本身的ssl是过期的。
解决
在宝塔中,点击软件商店
,找到php-7.4
,点击设置
, 在弹窗中,点击配置文件
菜单,找到:curl.cainfo
宝塔中的默认配置:
[curl]
curl.cainfo = /etc/ssl/certs/ca-certificates.crt
[openssl]
openssl.cafile=/etc/ssl/certs/ca-certificates.crt
由于操作系统默认的ca证书是过期的,导致的问题,所以下载一个新的证书
1.先下载证书 && 更改文件权限
curl -o /etc/ssl/certs/cacert.pem https://curl.se/ca/cacert.pem
chmod 755 /etc/ssl/certs/cacert.pem
2.更改配置
- 参数的值,就是上面通过curl下载的文件,对应的文件路径。
[curl]
curl.cainfo = "/etc/ssl/certs/cacert.pem"
[openssl]
openssl.cafile = "/etc/ssl/certs/cacert.pem"
更改完成后
- 点击保存按钮
- 重启php
注意:如果更改后,还是有有问题,就按照上面的格式,加上双引号试试,然后重新保存
,重启php
试试
3.在后台进行上传图片试试,是不是可以了