Trojan 把代理流量伪装成正常的 HTTPS,所以它必须有一张真实域名的证书—— 这是它和免证书协议最大的区别,也是这篇一半篇幅在讲证书的原因。
本文环境:Ubuntu 20.04 / Debian 11,面板用 mhsanaei/3x-ui,
示例域名 us.example.com。
一、安装证书工具
sudo apt update
sudo apt install nginx certbot python3-certbot-nginx -y
certbot 负责签发 Let’s Encrypt 证书,python3-certbot-nginx 是让它自动改
Nginx 配置的插件。
nginx 也要装。 下一步的 certbot --nginx 是靠临时改 Nginx 配置来完成
域名验证的,机器上没有 Nginx 这条命令会直接失败。装了之后 Nginx 只在签证书时用到,
不参与代理。
二、为域名申请 HTTPS 证书
sudo certbot --nginx -d us.example.com
- 请确保你的域名已经解析到当前 VPS 公网 IP。
- 请确保服务器的 80 和 443 端口已开放。部分 VPS 提供商要求不仅在系统内部(如通过 ufw 或 firewalld)放行端口,还需在云平台的 VPC 网络安全组 或 防火墙策略 中手动添加相应的入站规则,否则外部访问可能被阻断。
- 如果申请成功,证书和密钥默认保存在:
/etc/letsencrypt/live/us.example.com/fullchain.pem
/etc/letsencrypt/live/us.example.com/privkey.pem
三、安装 3x-ui 面板
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
安装完成后,运行:
x-ui
装完脚本会打印面板地址、端口和随机生成的初始账号密码——当场记下来,
这几个值每台机器都不一样,不是固定的 54321。忘了就在服务器上敲 x-ui 进菜单重设。
面板端口一定要改掉默认值并设强密码。3x-ui 面板一旦被爆破,等于整台服务器被拿走。
四、添加 Trojan 节点
打开浏览器,访问 x-ui 管理面板,添加一个新的入站配置,建议选择 Trojan 类型。
基本设置:
- 入站类型:Trojan(支持 TLS)
- 端口:建议使用
443、8443或其他自定义端口 - SNI(Server Name Indication):填写你的域名,例如
us.example.com - 密码(Password):用户连接所需的认证密码,自行设置,务必保密
证书配置:
证书文件路径:
/etc/letsencrypt/live/us.example.com/fullchain.pem
私钥文件路径:
/etc/letsencrypt/live/us.example.com/privkey.pem
其他可选项:
- 启用 TLS:必须勾选,Trojan 不加 TLS 就失去了伪装意义
- 传输方式可选 TCP、WebSocket 或 gRPC。WebSocket 更容易套 CDN,gRPC 在弱网下重连更快
Reality 配不到 Trojan 上。 Reality 是 XTLS 给 VLESS 做的传输层, 面板里它只在入站类型选 VLESS 时才出现。想用 Reality(好处是不需要域名和证书) 就得另建一个 VLESS 入站,跟这条 Trojan 是两个节点。
示例配置

五、客户端连接
导出配置(二维码或 JSON),导入到:
- v2rayN / NekoRay(Windows)
- Shadowrocket / Kitsunebi(iOS)
- v2rayNG / Clash Meta(Android)
确保客户端使用域名连接,启用 TLS,验证 SNI 字段一致。
六、证书自动续期
certbot 装好时会自带一个 systemd timer,每天检查两次,到期前 30 天自动续。 先确认它在跑:
systemctl list-timers | grep certbot
sudo certbot renew --dry-run # 演练一次,不会真的续
续期之后要让 3x-ui 重新读证书。 证书文件被换成了新的,而面板是启动时把证书 读进内存的,不重载就会在 90 天后突然连不上——而且那时候看日志只会说握手失败, 很难联想到证书。加一个续期后自动执行的钩子:
sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-xui.sh <<'EOF'
#!/bin/sh
systemctl restart x-ui
EOF
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-xui.sh
renewal-hooks/deploy/ 里的脚本只在证书真的续成功之后才执行,
不会每天白重启一次。
小结
| 工具 | 作用 |
|---|---|
certbot |
免费 HTTPS 证书 |
x-ui |
可视化管理 Trojan / VLESS 等协议 |
nginx |
只在 certbot --nginx 验证域名时用到,不参与代理 |
Let's Encrypt |
提供 90 天有效期免费证书 |
这种搭建方式兼顾易用性、可视化和协议灵活性,适合科学上网初学者快速部署。