В этом руководстве показано, как установить SSL-сертификат ACME на TrueNAS с помощью внешнего хоста и EAB (External Account Binding). Оно совместимо как с TrueNAS CORE, так и с TrueNAS SCALE.

TrueNAS имеет встроенную поддержку ACME, но только для Let’s Encrypt через встроенную интеграцию DNS-01. Если Вы хотите использовать коммерческий ACME-провайдер (Sectigo, DigiCert и т.д.) с ACME + EAB, Вы должны сгенерировать и обновить свой сертификат извне с помощью ACME-клиента, например, acme.sh, а затем установить его в TrueNAS.
Прежде чем начать
Вот что Вам понадобится:
- Доменное имя, указывающее на публичный IP-адрес Вашей TrueNAS (например, nas.example.com).
- TrueNAS CORE 13.x или TrueNAS SCALE 23.x+
- Внешняя машина Linux/BSD, VPS или домашний сервер (для запуска acme.sh)
- ACME Directory URL, EAB Key ID и EAB HMAC из Вашего коммерческого ЦС.
- SSH-доступ к TrueNAS, если Вы планируете автоматизировать синхронизацию
Примечание: TrueNAS НЕ поддерживает произвольных провайдеров ACME в своем пользовательском интерфейсе. Вся коммерческая автоматизация ACME должна происходить вне TrueNAS.
Шаг 1: Установите файл acme.sh на Ваш внешний хост
Эта машина будет заниматься регистрацией, выдачей и продлением счетов ACME.
Бег:
curl https://get.acme.sh | sh
source ~/.bashrc
acme.sh --version
Если версия печатается правильно, то все в порядке.
Шаг 2: Зарегистрируйте Вашу учетную запись ACME в Вашем коммерческом CA (ACME + EAB).
Ваша приборная панель CA предоставит:
- Идентификатор ключа EAB
- Ключ EAB HMAC
- URL-адрес каталога ACME
Зарегистрируйте свою учетную запись ACME:
acme.sh --register-account \
--server https://acme.yourca.com/v2/acme \
--eab-kid YOUR_EAB_KID \
--eab-hmac-key YOUR_EAB_HMAC_KEY \
--accountemail [email protected]
Замените значения на свои собственные. Запустите эту функцию только один раз.
Шаг 3: Выпустите сертификат (требуется проверка DNS-01)
TrueNAS почти всегда находится за NAT, поэтому проверка DNS является наиболее безопасной.
Вот пример DNS для манула:
acme.sh --issue \
-d nas.example.com \
--dns dns_manual \
--server https://acme.yourca.com/v2/acme
acme.sh предложит Вам создать TXT-запись:
_acme-challenge.nas.example.com TXT <token>
Создайте TXT-запись в Вашем DNS-менеджере и подождите, пока она распространится.
Проверьте распространение:
dig TXT _acme-challenge.nas.example.com +short
Как только появится маркер, повторно выполните ту же команду, и acme.sh завершит выдачу сертификата. Ваши файлы будут сохранены по адресу ~/.acme.sh/nas.example.com/.
Внутри вы найдете:
- fullchain.cer: серверный сертификат + промежуточный
- nas.example.com.key: закрытый ключ
- ca.cer: Цепочка CA (если предоставляется отдельно)
Шаг 4: Импортируйте сертификат в TrueNAS
- Перейти к: TrueNAS UI > Система > Сертификаты
- Нажмите Добавить и выберите Импорт сертификата
- Загрузите файлы сертификата и нажмите Сохранить
Присвойте сертификат Вашим службам:
- Веб-интерфейс
- Службы SMB / NFS (если применимо)
- API-интерфейсы среднего ПО
- Обратные прокси-серверы или приложения, использующие HTTPS (TrueNAS SCALE)
Шаг 5: Автоматизируйте продление и развертывание
TrueNAS не производит автоматическую выборку сертификатов. Вы должны вставить обновленные сертификаты в TrueNAS.
1. Создайте сценарий развертывания
На внешнем хосте ACME создайте файл /usr/local/bin/truenas-deploy.sh:
Примечание: Этот сценарий работает только в том случае, если TrueNAS разрешает доступ по SSH с пользователем, которому разрешено запускать midclt. Он загружает новый ключ + сертификат на /tmp/ и заменяет активный сертификат через TrueNAS API. Убедитесь, что Ваши пути и домен совпадают с настройками acme.sh.
#!/bin/bash
DOMAIN="nas.example.com"
NAS_USER="root"
NAS_HOST="truenas.local"
CERT_PATH="$HOME/.acme.sh/$DOMAIN"
KEY="$CERT_PATH/$DOMAIN.key"
CERT="$CERT_PATH/fullchain.cer"
scp "$KEY" "$NAS_USER@$NAS_HOST:/tmp/key.key"
scp "$CERT" "$NAS_USER@$NAS_HOST:/tmp/cert.cer"
ssh "$NAS_USER@$NAS_HOST" <<EOF
midclt call certificate.update '{"certificate": "custom", "csr": null, "privatekey": "$(cat /tmp/key.key)", "certificate": "$(cat /tmp/cert.cer)"}'
EOF
Сделайте его исполняемым:
chmod +x /usr/local/bin/truenas-deploy.sh
2. Добавьте крючок для обновления
Добавьте крючок развертывания в файл acme.sh:
acme.sh --deploy-hook truenas-deploy \
-d nas.example.com
Или добавьте это в файл ~/.acme.sh/deploy/truenas-deploy.sh.
3. Позвольте файлу acme.sh справиться со всем
Вот что делает acme.sh автоматически:
- Ежедневно проверяйте наличие обновлений
- Обновление сертификата
- Запускает Ваш сценарий развертывания
- Ввод обновленных сертификатов в TrueNAS
- Применяйте изменения бесшумно
После настройки Вам больше не придется прикасаться к TrueNAS для обновления сертификатов.
Общие вопросы
Если Вы впервые настраиваете автоматизацию ACME на TrueNAS, эти краткие ответы охватывают вопросы, с которыми пользователи сталкиваются чаще всего.
Могу ли я использовать один сертификат для графического интерфейса TrueNAS и других служб (SMB, NFS, iSCSI-порталов)?
Да. Как только Вы импортируете сертификат в System > Certificates, Вы можете выбрать один и тот же сертификат для веб-интерфейса и для любого сервиса, предоставляющего HTTPS (веб-интерфейс, API, возможно, обратный прокси/HAProxy, если Вы его используете). Вам не нужны отдельные сертификаты для каждой службы, если только Вы не хотите использовать разные имена хостов.
Мой NAS находится за CGNAT или двойным NAT. Могу ли я по-прежнему использовать ACME?
Да, но Вы должны использовать проверку DNS-01. HTTP-01 не будет работать, потому что сервер ACME не может связаться с Вашим NAS через порт 80. При использовании DNS-01 ЦС проверяет только Вашу TXT-запись по адресу _acme-challenge.yourdomain.com, поэтому ему неважно, где на самом деле находится NAS.
Что произойдет, если acme.sh обновит сертификат, но я забуду повторно импортировать его в TrueNAS?
TrueNAS просто продолжит использовать старый сертификат, который Вы импортировали в прошлый раз. Обновленные файлы будут лежать на Вашем внешнем хосте до тех пор, пока Вы не загрузите их снова (или пока Ваш скрипт/API не сделает это).
Ваш сайт по-прежнему будет работать, но в конце концов браузеры начнут предупреждать о просроченном сертификате. Поэтому стоит либо запустить сценарий повторного импорта, либо установить напоминание ближе к дате истечения срока действия.
Могу ли я использовать сертификат с подстановочным знаком (например, *.example.com) с TrueNAS
Да. Если закрытый ключ и сертификат совпадают, TrueNAS неважно, является ли это wildcard или single-host cert. Вам все равно придется выдать wildcard через DNS-01 в acme.sh, а затем импортировать fullchain.cer + *.example.com.key в TrueNAS. Только будьте осторожны, где Вы повторно используете этот ключ. Сертификат wildcard дает полный контроль над всеми поддоменами, на которые он распространяется.
Заключительные слова
Этот рабочий процесс дает Вам стабильный и надежный способ установки сертификата ACME на TrueNAS без борьбы с системой. Ваш внешний хост занимается выпуском, обновлением и управлением сертификатом, а TrueNAS просто получает чистый импорт при каждом обновлении файлов.
Как только процесс запущен, все тихо работает в фоновом режиме, и Вы вмешиваетесь только в том случае, если хотите настроить скрипты или изменить учетные данные.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

