Представь, что ты заходишь в веб-интерфейс своего TrueNAS сервера и видишь пугающее предупреждение браузера о небезопасном соединении. Знакомо? Это стандартное поведение при использовании самоподписанного SSL-сертификата. Давай разберем, как превратить это предупреждение в зеленый замочек и обеспечить безопасное шифрование трафика к твоему NAS.
Зачем нужен SSL в TrueNAS?
SSL (Secure Sockets Layer) и его преемник TLS (Transport Layer Security) — это протоколы, которые шифруют соединение между твоим браузером и сервером TrueNAS. Без них:
- Твои учетные данные (логин и пароль) передаются в открытом виде
- Данные конфигурации могут быть перехвачены
- Возможна атака "человек посередине" (MITM)
Три способа настройки SSL в TrueNAS
В TrueNAS Scale и Core есть несколько вариантов получения SSL-сертификата. Давай сравним их:
| Метод | Сложность | Стоимость | Доверие браузеров | Срок действия |
|---|---|---|---|---|
| Самоподписанный | Низкая | Бесплатно | Нет (требует исключения) | Любой |
| Let's Encrypt | Средняя | Бесплатно | Полное | 90 дней |
| Коммерческий SSL | Средняя | Платно | Полное | 1-2 года |
Способ 1: Самоподписанный сертификат (быстрый старт)
Это вариант по умолчанию. TrueNAS автоматически генерирует самоподписанный сертификат при установке. Чтобы создать новый или перегенерировать:
# Через SSH или консоль TrueNAS
# Генерация приватного ключа и CSR
openssl req -new -newkey rsa:2048 -nodes -keyout truenas.key -out truenas.csr
# Создание самоподписанного сертификата
openssl x509 -req -days 365 -in truenas.csr -signkey truenas.key -out truenas.crt
Затем в веб-интерфейсе TrueNAS:
- Перейди в System → Certificates
- Нажми Add → Import Certificate
- Загрузи файлы
.crtи.key - Перейди в System → General
- В разделе "GUI" выбери новый сертификат в поле "Web Interface SSL Certificate"
- Сохрани и перезагрузи веб-интерфейс
Способ 2: Let's Encrypt (бесплатный и доверенный)
Для использования Let's Encrypt тебе понадобится:
- Доменное имя, указывающее на твой TrueNAS (или динамический DNS)
- Порт 80, открытый для входящих подключений из интернета (для HTTP-01 challenge)
- Или возможность настроить DNS-записи (для DNS-01 challenge)
Настройка через веб-интерфейс TrueNAS Scale:
- System → Certificates
- Нажми Add → ACME DNS Authenticator (если используешь DNS challenge)
- Выбери провайдера DNS (Cloudflare, DigitalOcean и др.) и введи API ключи
- Вернись в Certificates → Add → ACME Certificate
- Заполни поля:
config
Domain: nas.tvoi-domain.com ACME DNS Authenticator: [Выбери созданный ранее] Certificate Lifetime (days): 90 Renew Certificate Days Before Expiry: 30 - Нажми Save — сертификат будет автоматически получен и установлен
Способ 3: Импорт коммерческого SSL-сертификата
Если ты купил SSL у провайдера вроде Comodo, Symantec или DigiCert:
- Получи от провайдера три файла:
your_domain.crt— твой сертификатca_bundle.crt— цепочка доверия (intermediate certificates)private.key— приватный ключ (его ты генерировал при создании CSR)
- Объедини сертификат и цепочку доверия:
bash
cat your_domain.crt ca_bundle.crt > combined.crt - В TrueNAS: System → Certificates → Add → Import Certificate
- Загрузи
combined.crtкак Certificate иprivate.keyкак Private Key
Настройка веб-сервера для SSL в TrueNAS
После установки сертификата нужно настроить веб-сервер (nginx в TrueNAS Scale):
# Пример конфигурации nginx для SSL
server {
listen 443 ssl http2;
server_name nas.tvoi-domain.com;
ssl_certificate /etc/certificates/truenas.crt;
ssl_certificate_key /etc/certificates/truenas.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
ssl_prefer_server_ciphers off;
# Остальная конфигурация...
}
В TrueNAS эта конфигурация управляется автоматически. Но ты можешь добавить кастомные настройки через:
- System → Advanced → поле "Additional SSL Certificates"
- Или через middleware, если используешь TrueNAS API
Распространенные ошибки SSL и их решение
Ошибка: "NET::ERR_CERT_AUTHORITY_INVALID"
Причина: Браузер не доверяет центру сертификации.
Решение для самоподписанных сертификатов:
- Экспортируй сертификат из TrueNAS (System → Certificates → Export)
- Импортируй его в хранилище доверенных корневых сертификатов на клиентских машинах
- Для Windows:
certlm.msc→ Trusted Root Certification Authorities - Для Linux: скопируй в
/usr/local/share/ca-certificates/и выполниupdate-ca-certificates
Ошибка: "SSL_ERROR_BAD_CERT_DOMAIN"
Причина: Имя в сертификате не совпадает с именем, по которому ты обращаешься к серверу.
Решение:
- Убедись, что в сертификате указано правильное доменное имя или IP
- Для локального использования добавь альтернативные имена (Subject Alternative Names):
bash
openssl req -new -newkey rsa:2048 -nodes -keyout truenas.key \ -out truenas.csr -addext "subjectAltName = DNS:nas.local,IP:192.168.1.100"
Let's Encrypt не обновляется автоматически
Решение: Проверь настройки автоматического обновления:
# Проверь задачи cron для обновления сертификатов
midclt call core.get_jobs | grep -i cert
# Запусти обновление вручную
midclt call certificate.update_acme_certificate [ID_сертификата]
Дополнительные настройки безопасности
После настройки SSL рекомендую:
- Включить HSTS (HTTP Strict Transport Security) — принудительное использование HTTPS
- Настроить редирект с HTTP на HTTPS в настройках GUI
- Использовать современные протоколы TLS 1.2/1.3 и отключить устаревшие SSLv3, TLS 1.0/1.1
- Регулярно обновлять сертификаты (особенно Let's Encrypt с 90-дневным сроком)
certbot с опцией --renew-hook или настрой оповещения в TrueNAS через System → Alert Services.
Часто задаваемые вопросы (FAQ)
Можно ли использовать один SSL сертификат для нескольких сервисов TrueNAS?
Да, если в сертификате указаны все необходимые имена (Subject Alternative Names). Например, можно добавить nas.domain.com, nextcloud.domain.com, *.domain.com (wildcard) в один сертификат.
Как проверить, правильно ли настроен SSL?
Используй онлайн-инструменты вроде SSL Labs (ssllabs.com/ssltest) или команду:
openssl s_client -connect nas.tvoi-domain.com:443 -servername nas.tvoi-domain.com
Что делать, если после обновления SSL перестал работать веб-интерфейс?
1. Проверь правильность объединения цепочки сертификатов.
2. Убедись, что приватный ключ соответствует сертификату.
3. Временно переключись на самоподписанный сертификат через консоль:
midclt call system.general.update '{"ui_certificate": {"id": ID_старого_сертификата}}'
Нужно ли настраивать SSL для доступа по IP-адресу?
Технически можно, но браузеры будут показывать предупреждение, так как сертификаты привязаны к доменным именам, а не IP. Лучше использовать локальное доменное имя (например, через /etc/hosts или локальный DNS).
Итог: какой метод выбрать?
- ✅ Для домашнего использования в локальной сети — самоподписанный сертификат с импортом в доверенные хранилища
- ✅ Для доступа из интернета с доменным именем — Let's Encrypt (бесплатно и автоматически)
- ✅ Для корпоративных сред с требованиями compliance — коммерческий SSL от доверенного центра
Помни: правильно настроенный SSL — это не просто зеленый замочек в браузере. Это фундаментальный элемент безопасности твоей инфраструктуры хранения данных.