Cloudflared Tunnel 凭据失效问题分析与解决笔记

一、问题现象

运行命令:

sudo cloudflared tunnel list

出现错误:

Cannot determine default origin certificate path.
No file cert.pem in [~/.cloudflared ~/.cloudflare-warp ~/cloudflare-warp /etc/cloudflared /usr/local/etc/cloudflared].
You need to specify the origin certificate path by specifying the origincert option in the configuration file, or set TUNNEL_ORIGIN_CERT environment variable.

Tunnel 无法列出,网站访问提示 Cloudflare Error 1033(Tunnel not found)。


二、问题根本原因

Cloudflared 使用两类凭据来验证身份与连接:

1. cert.pem

  • 作用:Cloudflare 账户登录凭证,用于验证操作权限(创建/查看隧道等)。
  • 默认位置:
    • Root 用户:/root/.cloudflared/cert.pem
    • 普通用户:~/.cloudflared/cert.pem
  • 特点:长期有效,但依赖文件存在与权限正确。
  • 丢失后,Cloudflare 将拒绝所有“账户级操作”(如 tunnel listtunnel create)。

2. <TunnelID>.json

  • 作用:某一条具体隧道的连接密钥(包含 TunnelSecret)。
  • 位置:/etc/cloudflared/<TunnelID>.json
  • 特点:只要文件未被删除或修改,Tunnel 本身仍有效; 但如果缺少 cert.pem,则无法由客户端重新建立连接。

三、常见触发原因

触发情形 说明
/root/.cloudflared 目录被清理 系统更新、重装或切换用户导致路径变化
Cloudflared 版本更新 新版本要求重新验证账户
使用普通用户执行命令 普通用户无法访问 /root/.cloudflared/cert.pem
权限或环境变量丢失 服务进程找不到正确凭证路径

四、解决步骤

1. 重新登录并生成新的证书

执行:

sudo cloudflared tunnel login

然后根据提示在浏览器打开链接登录 Cloudflare 账户。

成功后输出类似:

You have successfully logged in.
Your credentials have been saved to:
/root/.cloudflared/cert.pem

这一步会自动恢复账户凭证。


2. 再次验证隧道状态

sudo cloudflared tunnel list

若显示:

ID                                   NAME         CREATED              CONNECTIONS
d2e4cdb7-6efb-411b-b95f-ecefe9f88091 alist-tunnel 2025-06-05T14:17:31Z 1xhkg09, 1xhkg12, 1xsjc05, 1xsjc06

表示隧道重新连接成功。


3. 检查配置文件(/etc/cloudflared/config.yml)

推荐示例:

tunnel: d2e4cdb7-6efb-411b-b95f-ecefe9f88091
credentials-file: /etc/cloudflared/d2e4cdb7-6efb-411b-b95f-ecefe9f88091.json
protocol: auto

ingress:
  - hostname: alist.050626.xyz
    service: http://localhost:5244
  - service: http_status:404

protocol 建议使用 auto,以便自动使用 QUIC。


4. 检查 DNS 记录

进入 Cloudflare 控制台 → DNS

确保存在记录:

alist.050626.xyz  CNAME  d2e4cdb7-6efb-411b-b95f-ecefe9f88091.cfargotunnel.com

并且代理(橙色云朵)已启用。


5. 测试访问

浏览器访问:

https://alist.050626.xyz

若页面正常打开,则隧道恢复成功。


五、防止问题再次发生

  1. 备份凭据

    sudo mkdir -p /etc/cloudflared/backup
    sudo cp /root/.cloudflared/cert.pem /etc/cloudflared/backup/
    sudo cp /etc/cloudflared/*.json /etc/cloudflared/backup/
    
  2. 固定服务运行用户 编辑 systemd 服务:

    [Service]
    User=root
    ExecStart=/usr/bin/cloudflared --no-autoupdate --config /etc/cloudflared/config.yml tunnel run
    
  3. 保持版本更新

    sudo cloudflared update
    

    或手动:

    sudo wget -O /usr/bin/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
    sudo chmod +x /usr/bin/cloudflared
    
  4. 可选:自动检测脚本 可编写简单脚本检测证书文件是否存在并自动登录(后续可添加)。


六、结论

项目 状态 说明
证书文件 (cert.pem) 丢失或不可访问 重新登录生成后恢复正常
隧道凭证 (.json) 仍然有效 无需重新创建隧道
服务状态 恢复正常 访问恢复
预防措施 已建议 备份 + 固定权限 + 更新

总结一句话:

Cloudflared 隧道异常 1033 多数情况下并非隧道损坏,而是因账户凭证 cert.pem 丢失或权限错误导致身份验证失败。重新登录即可恢复。