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

Laravel 8应用部署时出现CloudFlare SSL证书无效报错排查

部署访问触发“Invalid SSL certificate”报错排查方案

核心配置疏漏逐点核对

  • 核对证书文件的完整链结构:CloudFlare源站证书的完整信任链需要将域名对应的服务器证书、CF的中间CA证书按顺序拼接为完整的.crt文件,仅单独保存域名段证书会因缺少中间链被浏览器判定为无效。可在服务器执行命令验证:
    openssl x509 -in /etc/nginx/ssl/mybabies.app.crt -noout -text
    若输出内容中无中间CA的绑定字段,即为证书拼接顺序错误。
  • 验证证书与私钥的匹配关系:上传配置时易出现证书与密钥不配套的问题,可分别计算两者的公钥哈希值核对:
    提取证书公钥哈希:openssl x509 -noout -modulus -in /etc/nginx/ssl/mybabies.app.crt | openssl md5
    提取私钥公钥哈希:openssl rsa -noout -modulus -in /etc/nginx/ssl/mybabies.app.key | openssl md5
    两个命令的输出哈希完全一致才为匹配的一对密钥,否则需重新替换文件。
  • 修正Nginx SSL监听配置:当前配置中的listen 443;不符合Nginx SSL配置的规范写法,旧版本Nginx会因未显式声明SSL模式导致握手流程异常,需修改为listen 443 ssl;。

代理暂停场景下的认知误区纠正

  • 你当前暂停CloudFlare代理后,用户请求会直接访问源站服务器。这里需要明确:CloudFlare后台生成的源站SSL证书,仅用于CloudFlare边缘节点与源站之间的加密传输,该证书的信任根未被主流浏览器内置信任列表收录,一旦关闭CF代理让用户直连源站,浏览器会直接判定证书无效,这是导致你当前报错的最常见原因。
  • 该场景下的两种可选修复路径:
    • 恢复CloudFlare站点代理,将SSL加密模式设置为Full (Strict),此时用户浏览器看到的是CloudFlare公网信任的边缘证书,源站通过CF生成的源站证书完成与CF节点的加密传输,不会出现证书无效的报错。
    • 若需直连源站调试、不经过CloudFlare代理,需替换为被浏览器内置信任的公共CA签发的证书(如Let's Encrypt免费证书),不要使用CF生成的源站证书作为直连站点的服务证书。

辅助校验细节

  • 检查SSL文件的系统权限:Nginx进程默认以www-data用户运行,需保证证书文件权限为644、私钥文件权限为600,文件属主设置为www-data,权限不足会导致Nginx无法读取密钥文件,触发握手失败。
  • 每次修改Nginx配置后,先执行nginx -t校验语法,确认输出syntax is ok、test is successful后,再执行systemctl reload nginx重载配置,不要忽略语法校验的报错直接重启服务。
  • 若私钥为PKCS8格式(文件头为-----BEGIN PRIVATE KEY-----),部分旧版本Nginx存在读取兼容问题,可执行命令转换为传统RSA格式:
    openssl pkcs8 -in /etc/nginx/ssl/mybabies.app.key -out /etc/nginx/ssl/mybabies_rsa.key -traditional
    替换配置里的密钥路径即可解决兼容问题。
  • 补充80端口的跳转配置,避免HTTP请求绕过SSL校验直接访问源站:
    server {
        listen 80;
        server_name mybabies.app www.mybabies.app;
        return 301 https://$host$request_uri;
    }
    

内容的提问来源于stack exchange,提问作者code-8

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 09:06:04