SSL-сертификаты
Получение и продление TLS-сертификатов для панели и входящих подключений 3x-ui — через меню ACME в x-ui (домен или голый IP), wildcard через Cloudflare DNS-01 или вручную с помощью Certbot.
TLS-сертификат позволяет обслуживать панель по HTTPS (чтобы трафик входа и API был зашифрован) и терминировать TLS на входящих подключениях (VLESS-TLS, Trojan, Shadowsocks-TLS и им подобных). Получить его можно тремя способами:
- Меню
x-ui— встроенный ACME-клиент. Проще всего для одного домена или голого IP. - Cloudflare DNS-01 — тоже из меню; нужен для wildcard-сертификатов или когда порт 80 заблокирован / сервер находится за прокси Cloudflare.
- Вручную через Certbot — если вы предпочитаете управлять
acme.sh/Certbot самостоятельно.
Если вы размещаете панель за Nginx или Caddy, доверьте управление сертификатом прокси-серверу — см. Обратный прокси. Входящим подключениям REALITY сертификат не нужен вовсе; они заимствуют TLS реального сайта. Эта страница — про панель и про классические TLS-входящие подключения.
Меню SSL в x-ui (Let's Encrypt)
Запустите x-ui и выберите 20 — SSL Certificate Management. Оно управляет
acme.sh и предлагает:
| Опция | Что делает |
|---|---|
| Get SSL (Domain) | Выпустить сертификат для домена через HTTP-проверку. |
| Get SSL for IP Address | Выпустить короткоживущий (6-дневный, автопродление) сертификат для голого IP. |
| Revoke | Отозвать существующий сертификат. |
| Force Renew | Продлить сейчас, до истечения срока. |
| Show Existing Domains | Перечислить сертификаты, уже имеющиеся на сервере. |
| Set Cert paths for the panel | Указать панели путь к выпущенному сертификату (заполняет поля за вас). |
Выпуск сертификата для домена
Направьте домен на сервер
Создайте запись A (и/или AAAA) для вашего домена, которая указывает на
публичный IP этого сервера. Проверка не пройдёт, пока DNS не распространится.
Освободите порт 80
HTTP-проверке нужен порт 80, доступный из интернета и ещё не занятый. На время проверки остановите всё, что к нему привязано, и откройте его в файрволе.
Запустите выпуск
x-ui → 20 → Get SSL (Domain), затем введите домен. acme.sh запрашивает
сертификат и сохраняет его в каталоге /root/cert/<domain>/ как fullchain.pem
(цепочка сертификатов) и privkey.pem (приватный ключ).
Подключите его к панели
Выберите Set Cert paths for the panel, чтобы заполнить webCertFile и
webKeyFile и перезапустить панель, либо задайте их сами в разделе
Настройки панели. Панель начинает обслуживать HTTPS, как только
заданы оба значения.
Выпуск сертификата для голого IP
Нет домена? Выберите Get SSL for IP Address, чтобы получить короткоживущий сертификат (действует ~6 дней, продлевается автоматически), привязанный к IP сервера. Полезно для доступа к панели по HTTPS до того, как вы настроите домен.
Cloudflare (wildcard через DNS-01)
DNS-проверка подтверждает, что вы управляете доменом, путём создания TXT-записи вместо
ответа на порту 80 — поэтому она работает за прокси Cloudflare, на серверах,
где порт 80 заблокирован, и для wildcard-сертификатов (*.example.com).
DNS вашего домена должен управляться Cloudflare, и вам понадобится одно из:
- ограниченный по области API-токен с правом
Zone:DNS:Edit(рекомендуется), либо - email вашей учётной записи + Global API Key.
Создайте ограниченный API-токен
В панели Cloudflare перейдите в My Profile → API Tokens → Create Token, выберите шаблон Edit zone DNS, ограничьте его областью той зоны, для которой выпускаете сертификат, и создайте токен. Скопируйте его — он показывается только один раз.
Запустите выпуск через Cloudflare
x-ui → 21 — Cloudflare SSL Certificate. На запрос выберите t для
API-токена (по умолчанию) или g для Global API Key, затем введите свой
домен (а для Global API Key — ещё email учётной записи и ключ). acme.sh создаёт
TXT-запись, проходит проверку и убирает её.
Направьте на него панель
Как и в случае с доменом, используйте Set Cert paths for the panel (меню 20) или задайте
webCertFile / webKeyFile в разделе Настройки панели.
Предпочитайте ограниченный токен Global API Key — он даёт право только на изменение DNS в выбранной вами зоне, поэтому его утечка не затронет остальную часть вашей учётной записи Cloudflare.
Вручную (Certbot)
Если вы предпочитаете не пользоваться меню, выпустите сертификат с помощью standalone-плагина Certbot (это, опять же, требует свободного порта 80 и домена, указывающего на сервер):
apt-get install certbot -y
certbot certonly --standalone --agree-tos --register-unsafely-without-email -d yourdomain.com
certbot renew --dry-runCertbot записывает сертификат в /etc/letsencrypt/live/yourdomain.com/
(fullchain.pem и privkey.pem). Укажите панели путь к этим двум файлам в разделе
Настройки панели и настройте продление — certbot renew
по умолчанию запускается через таймер systemd.
Использование сертификата
- Панель — задайте
webCertFile(полная цепочка) иwebKeyFile(приватный ключ) в разделе Настройки панели. Чтобы панель переключилась на HTTPS, должны быть заданы оба. Пункт меню11— View Current Settings выводит пути, используемые в данный момент. - Входящие подключения — когда вы включаете TLS на входящем подключении, укажите те же файлы сертификата и ключа (или вставьте их содержимое) в настройках TLS этого подключения. См. Входящие подключения и Транспорты.
Сертификаты истекают (Let's Encrypt: 90 дней; IP-сертификаты: ~6 дней). И меню, и
Certbot продлевают их автоматически, но панель продолжает читать файлы по их
фиксированным путям — поэтому продлевайте на месте, а не перемещайте файлы, и
панель подхватит новый сертификат при следующем перезапуске. Force Renew (меню 20)
запускает продление по требованию.
Дальнейшие шаги
Настройки панели
Все настройки панели 3x-ui — веб-сервер, TLS, отображение, безопасность и уведомления — со значениями по умолчанию из исходного кода.
Входящие подключения и протоколы
Создание входящих подключений в 3x-ui — протоколы, транспорты, сброс трафика и срок действия, а также fallback-правила, обслуживающие несколько протоколов на одном порту.

3x-ui