You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04 全新安装后PHP及HTTPS下载SSL证书验证失败问题求助

Ubuntu 22.04 全新安装后PHP及HTTPS下载SSL证书验证失败问题求助

嗨,Steve,我看你刚上手Ubuntu 22.04,之前有RHEL的使用经验,现在遇到了PHP用HTTPS下载时SSL证书验证失败的问题——这种发行版之间的小差异确实容易让人懵,我来给你一步步梳理解决办法:

一、先确保系统根证书包完整并更新

Ubuntu和RHEL的证书管理机制略有不同,你之前直接把证书放到/etc/ssl/certs/的方式在Ubuntu里不会生效,因为这个目录的证书是由系统工具自动维护的。先做以下操作:

  • 安装(或重新安装)系统根证书包:
    sudo apt install --reinstall ca-certificates
    
  • 更新系统证书缓存:
    sudo update-ca-certificates
    
    这个命令会把系统信任的根证书打包到/etc/ssl/certs/ca-certificates.crt这个文件里,这是Ubuntu系统默认的全局证书bundle。

二、正确导入自定义/私有CA证书(如果目标网站用的是非公信任证书)

如果你要访问的网站用的是自签证书或者私有CA颁发的证书,需要按以下步骤导入:

  • 将下载的证书文件(后缀改为.crt,比如my-custom-cert.crt)放到/usr/local/share/ca-certificates/目录下,这个目录是专门存放用户自定义证书的地方;
  • 再次运行更新命令:
    sudo update-ca-certificates
    
    运行后会看到类似“1 added”的提示,说明证书已经被成功加入到全局证书bundle中。

三、检查PHP CLI的OpenSSL配置

PHP的CLI版本可能使用单独的配置文件,需要确保它指向了正确的证书路径:

  • 先找到你的PHP CLI对应的php.ini文件,比如Ubuntu 22.04默认PHP 8.1的路径是/etc/php/8.1/cli/php.ini,也可以用这个命令确认具体路径:
    php -i | grep "Loaded Configuration File"
    
  • 打开这个php.ini文件,找到以下两个配置项,确保它们的值设置正确:
    openssl.cafile = /etc/ssl/certs/ca-certificates.crt
    openssl.capath = /etc/ssl/certs
    
  • 保存文件后,不需要重启任何服务,直接重新运行你的PHP下载命令即可。

四、验证证书是否生效

可以先用curl命令测试系统层面的证书信任情况:

curl https://somesite.com/file.txt

如果curl能成功下载文件,说明系统证书配置没问题,那问题大概率出在PHP的配置上;如果curl也报错,那回到前面的步骤检查系统证书的安装和更新是否正确。

备注:内容来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:49:34