Управление сертификатами pfSense - CA, TLS и Let's Encrypt
Менеджер сертификатов pfSense (System > Certificates) предоставляет централизованное управление всеми компонентами PKI - центрами сертификации, сертификатами и списками отзыва. Все сертификаты, используемые компонентами pfSense, хранятся в единой базе и доступны для выбора в настройках соответствующих сервисов. Данное руководство описывает полный цикл работы с сертификатами - от создания внутреннего CA до автоматизации получения публичных сертификатов через Let’s Encrypt.
Структура Certificate Manager
Менеджер сертификатов разделён на три вкладки, каждая из которых отвечает за отдельный компонент PKI.
| Вкладка | Назначение |
|---|---|
| Authorities | Управление центрами сертификации (CA) |
| Certificates | Управление серверными и клиентскими сертификатами |
| Certificate Revocation | Управление списками отзыва сертификатов (CRL) |
Переход между вкладками осуществляется из меню System > Certificates. Каждый компонент может быть создан локально или импортирован из внешнего источника.
Создание внутреннего центра сертификации
Внутренний CA (Certificate Authority) является корневым элементом доверия для всей PKI. Все сертификаты, подписанные этим CA, будут приняты сервисами pfSense, настроенными на доверие данному CA.
Процедура создания CA
- Перейти в System > Certificates, вкладка Authorities
- Нажать Add для создания нового CA
- Заполнить параметры:
| Параметр | Значение | Описание |
|---|---|---|
| Descriptive name | Internal-CA | Произвольное имя для идентификации CA в интерфейсе |
| Method | Create an internal Certificate Authority | Создание нового самоподписанного CA |
| Key type | RSA | Тип криптографического ключа |
| Key length | 2048 или 4096 | Длина ключа в битах. 4096 обеспечивает большую криптостойкость |
| Digest Algorithm | SHA256 | Алгоритм хэширования для подписи |
| Lifetime | 3650 | Срок действия CA в днях (10 лет) |
| Common Name | internal-ca | Уникальное имя CA в формате CN |
| Country Code | RU | Код страны (ISO 3166-1 alpha-2) |
| State/Province | Moscow | Регион |
| City | Moscow | Город |
| Organization | Company Name | Название организации |
- Нажать Save для создания CA
После создания CA его сертификат (без закрытого ключа) необходимо экспортировать и установить на клиентские устройства для обеспечения доверия. Экспорт выполняется нажатием на значок загрузки напротив CA в списке.
Промежуточные CA
pfSense поддерживает создание промежуточных CA, подписанных корневым CA. Это позволяет выстраивать цепочку доверия и ограничивать область применения сертификатов. Для создания промежуточного CA следует выбрать метод Create an intermediate Certificate Authority и указать родительский CA.
Рекомендуется создавать отдельные CA для различных целей:
- CA для OpenVPN-подключений
- CA для IPsec VPN
- CA для веб-интерфейса и внутренних сервисов
Такое разделение обеспечивает изоляцию - отзыв или компрометация одного CA не затрагивает сертификаты, выданные другими CA.
Создание серверных сертификатов
Серверные сертификаты используются для идентификации сервисов pfSense перед клиентами. Типичные сценарии применения - защита веб-интерфейса (HTTPS), серверная сторона OpenVPN и серверная часть IPsec.
Процедура создания серверного сертификата
- Перейти в System > Certificates, вкладка Certificates
- Нажать Add/Sign
- Заполнить параметры:
| Параметр | Значение | Описание |
|---|---|---|
| Method | Create an internal Certificate | Создание нового сертификата |
| Descriptive name | WebGUI-Cert | Имя для идентификации в интерфейсе |
| Certificate authority | Internal-CA | CA, который подпишет этот сертификат |
| Key type | RSA | Тип ключа |
| Key length | 2048 | Длина ключа |
| Digest Algorithm | SHA256 | Алгоритм хэширования |
| Lifetime | 398 | Срок действия в днях |
| Common Name | firewall.example.com | FQDN сервера |
| Certificate Type | Server Certificate | Тип сертификата |
- В секции Alternative Names добавить все DNS-имена и IP-адреса, по которым будет доступен сервис
- Нажать Save
Внимание:
Современные браузеры требуют наличия Subject Alternative Name (SAN) в сертификате. Поле Common Name (CN) используется только как запасной вариант в устаревших клиентах. Необходимо добавить FQDN и IP-адреса в секцию Alternative Names.
Привязка сертификата к веб-интерфейсу
После создания серверного сертификата его необходимо назначить веб-интерфейсу:
- Перейти в System > Advanced, вкладка Admin Access
- В поле SSL/TLS Certificate выбрать созданный сертификат
- Нажать Save
- Веб-интерфейс перезагрузится с новым сертификатом
Срок действия серверных сертификатов
Apple и другие производители браузеров ограничивают максимальный срок действия публичных TLS-сертификатов до 398 дней. Хотя для внутренних сертификатов это ограничение не является обязательным, рекомендуется придерживаться аналогичных сроков для упрощения ротации и снижения рисков компрометации.
Создание клиентских сертификатов
Клиентские сертификаты используются для аутентификации пользователей при подключении к VPN (OpenVPN, IPsec) и для доступа к ресурсам через Captive Portal.
Процедура создания клиентского сертификата
- Перейти в System > Certificates, вкладка Certificates
- Нажать Add/Sign
- Заполнить параметры:
| Параметр | Значение | Описание |
|---|---|---|
| Method | Create an internal Certificate | Создание нового сертификата |
| Descriptive name | user-ivanov | Имя пользователя или устройства |
| Certificate authority | VPN-CA | CA для VPN-сертификатов |
| Key type | RSA | Тип ключа |
| Key length | 2048 | Длина ключа |
| Digest Algorithm | SHA256 | Алгоритм хэширования |
| Lifetime | 365 | Срок действия (1 год) |
| Common Name | user-ivanov | Идентификатор пользователя |
| Certificate Type | User Certificate | Тип сертификата |
- Нажать Save
При использовании OpenVPN клиентский сертификат может быть привязан к учётной записи пользователя в User Manager. Это обеспечивает двухфакторную аутентификацию - сертификат (что-то, что есть у пользователя) и пароль (что-то, что знает пользователь).
Создание сертификата через User Manager
Альтернативный способ создания клиентского сертификата - через учётную запись пользователя:
- Перейти в System > User Manager
- Редактировать учётную запись пользователя
- В секции User Certificates нажать Add
- Заполнить параметры сертификата
- Сохранить
Этот метод автоматически привязывает сертификат к пользователю, что упрощает управление при большом количестве VPN-пользователей.
Импорт внешних сертификатов
pfSense позволяет импортировать сертификаты, полученные от внешних центров сертификации (DigiCert, Sectigo, Let’s Encrypt и др.). Импорт необходим в следующих случаях:
- Использование публично доверенных сертификатов для веб-интерфейса
- Интеграция с корпоративной PKI
- Миграция с другого межсетевого экрана
Процедура импорта CA
- Перейти в System > Certificates, вкладка Authorities
- Нажать Add
- Выбрать метод Import an existing Certificate Authority
- Вставить содержимое CA-сертификата в формате PEM в поле Certificate data
- При необходимости импортировать закрытый ключ CA (требуется для подписи новых сертификатов)
- Нажать Save
Процедура импорта сертификата
- Перейти в System > Certificates, вкладка Certificates
- Нажать Add/Sign
- Выбрать метод Import an existing Certificate
- Вставить сертификат в формате PEM в поле Certificate data
- Вставить закрытый ключ в поле Private key data
- Нажать Save
Внимание:
Закрытый ключ не должен быть защищён паролем (passphrase). Если ключ зашифрован, необходимо предварительно снять защиту командой
openssl rsa -in encrypted.key -out decrypted.key.
Списки отзыва сертификатов (CRL)
Certificate Revocation List (CRL) - механизм отзыва скомпрометированных или недействительных сертификатов. При подключении клиента сервис проверяет сертификат по CRL и отклоняет соединение, если сертификат отозван.
Создание CRL
- Перейти в System > Certificates, вкладка Certificate Revocation
- Нажать Add напротив нужного CA
- Выбрать метод Create an internal Certificate Revocation List
- Указать имя CRL
- Нажать Save
Отзыв сертификата
- Открыть CRL для редактирования
- В секции Choose a Certificate to Revoke выбрать сертификат
- Указать причину отзыва (Key Compromise, CA Compromise, Cessation of Operation и др.)
- Нажать Add
После отзыва сертификата все текущие подключения, использующие этот сертификат, будут разорваны при следующей проверке CRL. Для OpenVPN это происходит при переустановке TLS-сессии.
Привязка CRL к сервисам
CRL необходимо явно привязать к сервису для активации проверки:
- OpenVPN: в настройках сервера, поле Peer Certificate Revocation List
- IPsec: проверка CRL настраивается в параметрах Phase 1
Без привязки CRL к сервису отозванные сертификаты будут продолжать приниматься.
Пакет ACME для Let’s Encrypt
ACME (Automated Certificate Management Environment) - протокол автоматического получения и обновления сертификатов от публичных CA. Пакет ACME для pfSense позволяет автоматизировать получение бесплатных TLS-сертификатов от Let’s Encrypt.
Установка пакета ACME
- Перейти в System > Package Manager, вкладка Available Packages
- Найти пакет acme
- Нажать Install и подтвердить установку
После установки пакет доступен в меню Services > Acme Certificates.
Регистрация аккаунта Let’s Encrypt
- Перейти в Services > Acme Certificates, вкладка Account Keys
- Нажать Add
- Заполнить параметры:
| Параметр | Значение |
|---|---|
| Name | LetsEncrypt-Prod |
| ACME Server | Let’s Encrypt Production ACME v2 |
| Email Address | admin@example.com |
- Нажать Create new account key
- Нажать Register ACME account key
- Нажать Save
Для тестирования рекомендуется сначала использовать Let’s Encrypt Staging для избежания ограничений на количество запросов.
Создание сертификата через ACME
- Перейти на вкладку Certificates
- Нажать Add
- Заполнить параметры:
| Параметр | Значение | Описание |
|---|---|---|
| Name | firewall-acme | Имя сертификата |
| Status | Active | Статус |
| Acme Account | LetsEncrypt-Prod | Ранее созданный аккаунт |
| Private Key | 2048-bit RSA | Тип и длина ключа |
| Domain SAN list | firewall.example.com | Список доменных имён |
- В секции Domain SAN list выбрать метод валидации:
| Метод валидации | Когда использовать |
|---|---|
| Standalone HTTP server | Порт 80 доступен из интернета, нет веб-сервера |
| Standalone TLS-ALPN | Порт 443 доступен, нет других TLS-сервисов |
| DNS-Manual | Ручное добавление DNS-записи (не подходит для автоматизации) |
| DNS-Cloudflare/Route53/etc. | Автоматическая DNS-валидация через API провайдера |
- Нажать Save
- Нажать Issue/Renew для получения сертификата
Автоматическое обновление
Пакет ACME автоматически создаёт задание cron для обновления сертификатов. По умолчанию проверка выполняется ежедневно, и сертификат обновляется при приближении срока истечения (менее 30 дней).
Для применения обновлённого сертификата к веб-интерфейсу необходимо включить опцию ACME Renewal в настройках сертификата и выбрать действие Restart webConfigurator в поле Actions list.
Wildcard-сертификаты
Let’s Encrypt поддерживает выдачу wildcard-сертификатов (*.example.com), но только через DNS-валидацию. Метод HTTP-валидации для wildcard-сертификатов недоступен. Необходимо настроить интеграцию с DNS-провайдером через API.
Где используются сертификаты
Сертификаты, управляемые через Certificate Manager, используются в следующих компонентах pfSense.
| Компонент | Тип сертификата | Назначение |
|---|---|---|
| Web GUI | Серверный | HTTPS-доступ к веб-интерфейсу |
| OpenVPN Server | Серверный | Идентификация сервера перед клиентами |
| OpenVPN Client | Клиентский | Аутентификация пользователя на сервере |
| IPsec | Серверный/Клиентский | Аутентификация участников VPN-туннеля |
| Captive Portal | Серверный | HTTPS-портал авторизации |
| HAProxy | Серверный | TLS-терминация на балансировщике |
| LDAP Auth | CA | Верификация LDAP-сервера при подключении |
| Syslog (TLS) | Серверный/CA | Шифрование передачи логов |
Обновление и ротация сертификатов
Ручное обновление
При приближении срока истечения сертификата необходимо создать новый сертификат с теми же параметрами и заменить старый во всех сервисах, которые его используют. pfSense отображает дату истечения в списке сертификатов и предупреждает об истекающих сертификатах в Dashboard.
Рекомендации по ротации
| Тип сертификата | Рекомендуемый срок | Обоснование |
|---|---|---|
| CA | 10-20 лет | Замена CA требует переиздания всех сертификатов |
| Серверный | 1-2 года | Соответствие требованиям браузеров |
| Клиентский | 1 год | Регулярная ротация для снижения рисков |
| ACME (Let’s Encrypt) | 90 дней (автоматически) | Установлено Let’s Encrypt |
Мониторинг истечения
pfSense отображает статус сертификатов в веб-интерфейсе:
- Зелёный - сертификат действителен
- Жёлтый - срок действия истекает в ближайшие 30 дней
- Красный - сертификат истёк
Рекомендуется настроить мониторинг через SNMP или интеграцию с Wazuh для автоматического оповещения об истекающих сертификатах.
Устранение неполадок
Ошибка “Certificate chain is incomplete”
Проблема возникает, когда клиент не может построить цепочку доверия от серверного сертификата до корневого CA.
Решение:
- Убедиться, что CA-сертификат установлен на клиентском устройстве
- При использовании промежуточного CA - убедиться, что вся цепочка (промежуточный + корневой CA) передаётся клиенту
- Проверить, что в настройках сервиса указан корректный CA
Ошибка “Certificate has expired”
Сертификат с истекшим сроком действия отклоняется клиентами и сервисами.
Решение:
- Создать новый сертификат с актуальными сроками
- Заменить сертификат во всех сервисах, которые его используют
- Перезапустить сервисы для применения нового сертификата
Ошибка “NET::ERR_CERT_AUTHORITY_INVALID”
Браузер не доверяет CA, выдавшему сертификат.
Решение для внутреннего CA:
- Экспортировать CA-сертификат из pfSense
- Установить его в хранилище доверенных корневых сертификатов операционной системы или браузера
- Перезапустить браузер
OpenVPN не принимает сертификат
Проблема может быть вызвана несколькими причинами:
- Тип сертификата (Server/User) не соответствует роли в VPN
- Сертификат подписан CA, отличным от указанного в настройках OpenVPN
- Сертификат отозван через CRL
Для диагностики следует проверить логи OpenVPN в Status > System Logs, вкладка OpenVPN.
Примечания по миграции
При миграции с другого межсетевого экрана или при обновлении pfSense следует учитывать:
- Экспортировать все CA, сертификаты и CRL до миграции
- Сертификаты экспортируются в формате PEM через значок загрузки в Certificate Manager
- Закрытые ключи экспортируются отдельно и должны храниться в защищённом месте
- После импорта необходимо заново привязать сертификаты к сервисам (OpenVPN, IPsec, Web GUI)
- Резервная копия конфигурации pfSense включает все сертификаты и ключи - при восстановлении из бэкапа повторный импорт не требуется
Связанные разделы
- VPN - OpenVPN - настройка OpenVPN с использованием сертификатов
- Управление пользователями - привязка сертификатов к учётным записям пользователей
- Бэкап и восстановление - резервное копирование конфигурации, включая сертификаты