3x-ui3x-ui
配置

SSL 证书

为 3x-ui 面板和入站获取并续期 TLS 证书——可使用 x-ui 的 ACME 菜单(域名或裸 IP)、Cloudflare DNS-01 通配符,或手动 Certbot。

TLS 证书让你能够通过 HTTPS 提供面板服务(这样你的登录和 API 流量都会被加密),并在入站上终止 TLS(VLESS-TLS、Trojan、 Shadowsocks-TLS 等等)。获取证书有三种方式:

  • x-ui 菜单——内置的 ACME 客户端。对于单个域名或裸 IP 来说最为简单。
  • Cloudflare DNS-01——同样在菜单中提供;适用于通配符证书,或者 当 80 端口被封锁 / 服务器位于 Cloudflare 代理之后时。
  • 手动 Certbot——如果你更愿意自己管理 acme.sh/Certbot。

如果你将面板置于 Nginx 或 Caddy 之后,可以改为让反向代理来处理 证书——参见反向代理REALITY 入站完全不需要证书;它们 借用真实站点的 TLS。本页面针对的是面板和传统的 TLS 入站。

x-ui SSL 菜单(Let's Encrypt)

运行 x-ui 并选择 20 — SSL Certificate Management。它会调用 acme.sh,并提供以下功能:

选项作用
Get SSL (Domain)通过 HTTP 验证为域名签发证书。
Get SSL for IP Address裸 IP 签发短期(6 天、自动续期)证书。
Revoke吊销现有证书。
Force Renew在到期前立即续期。
Show Existing Domains列出服务器上已有的证书。
Set Cert paths for the panel将面板的 TLS 指向已签发的证书(自动为你填写相关字段)。

为域名签发证书

将域名指向服务器

为你的域名创建一条 A(和/或 AAAA)记录,解析到该 服务器的公网 IP。在 DNS 完成传播之前,验证将会失败。

腾出 80 端口

HTTP 验证需要 80 端口可从互联网访问且未被占用。请在验证期间 停止任何绑定该端口的程序,并在防火墙中放行它。

运行签发程序

x-ui20Get SSL (Domain),然后输入域名。acme.sh 会请求 证书,并将其保存在 /root/cert/<domain>/ 目录下,文件名为 fullchain.pem (证书链)和 privkey.pem(私钥)。

接入面板

选择 Set Cert paths for the panel 来填写 webCertFilewebKeyFile 并重启面板,或者在 面板设置中自行设置。两项都设置完成后,面板便会 立即提供 HTTPS 服务。

为裸 IP 签发证书

没有域名?选择 Get SSL for IP Address 来获取一个绑定到服务器 IP 的 短期证书(有效期约 6 天,自动续期)。 在你设置好域名之前,这对于通过 HTTPS 访问面板很有用。

Cloudflare(DNS-01 通配符)

DNS 验证通过创建 TXT 记录来证明你对域名的控制权,而无需在 80 端口上 作出应答——因此它能在 Cloudflare 代理之后、在 80 端口被封锁的 服务器上,以及为通配符证书(*.example.com)正常工作。

你的域名 DNS 必须由 Cloudflare 托管,并且你需要具备以下两者之一:

  • 一个具有 Zone:DNS:Edit 权限的受限范围 API 令牌(推荐),或
  • 你的账户邮箱 + Global API Key

创建受限范围 API 令牌

在 Cloudflare 控制台中进入 My Profile → API Tokens → Create Token,选择 Edit zone DNS 模板,将其范围限定到你要签发证书的区域,然后创建 它。复制该令牌——它只会显示一次。

运行 Cloudflare 签发程序

x-ui21 — Cloudflare SSL Certificate。当提示时,选择 t 使用 API 令牌(默认),或选择 g 使用 Global API Key,然后输入你的 域名(如果使用 Global API Key,还需输入你的账户邮箱和密钥)。acme.sh 会创建 TXT 记录、完成验证,并在之后将其清理。

将面板指向证书

与域名流程一样,使用 Set Cert paths for the panel(菜单 20)或在 面板设置中设置 webCertFile / webKeyFile

请优先使用受限范围令牌而非 Global API Key——它只授予对你所选区域的 DNS 编辑权限,因此即使泄露也无法波及你 Cloudflare 账户的其余部分。

手动(Certbot)

如果你不想使用菜单,可以用 Certbot 的 standalone 插件来签发证书 (同样需要 80 端口空闲,且域名已解析到服务器):

apt-get install certbot -y
certbot certonly --standalone --agree-tos --register-unsafely-without-email -d yourdomain.com
certbot renew --dry-run

Certbot 会将证书写入 /etc/letsencrypt/live/yourdomain.com/fullchain.pemprivkey.pem)。在面板设置中 将面板指向这两个文件,并设置好续期——certbot renew 默认会在 systemd 定时器上运行。

使用证书

  • 面板——在面板设置中设置 webCertFile(完整证书链) 和 webKeyFile(私钥)。两项都必须设置,面板才会 切换到 HTTPS。菜单选项 11 — View Current Settings 会打印 当前正在使用的路径。
  • 入站——当你在某个入站上启用 TLS 时,在该入站的 TLS 设置中引用相同的证书和密钥文件(或粘贴其内容)。参见 入站传输

证书会过期(Let's Encrypt:90 天;IP 证书:约 6 天)。菜单和 Certbot 都会自动续期,但面板始终读取固定路径下的文件—— 因此请原地续期,而不要移动文件,这样面板会在下次重启时 自动加载新证书。Force Renew(菜单 20)可 按需触发一次续期。

后续步骤

On this page