Управление сертификатами 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

  1. Перейти в System > Certificates, вкладка Authorities
  2. Нажать Add для создания нового CA
  3. Заполнить параметры:
ПараметрЗначениеОписание
Descriptive nameInternal-CAПроизвольное имя для идентификации CA в интерфейсе
MethodCreate an internal Certificate AuthorityСоздание нового самоподписанного CA
Key typeRSAТип криптографического ключа
Key length2048 или 4096Длина ключа в битах. 4096 обеспечивает большую криптостойкость
Digest AlgorithmSHA256Алгоритм хэширования для подписи
Lifetime3650Срок действия CA в днях (10 лет)
Common Nameinternal-caУникальное имя CA в формате CN
Country CodeRUКод страны (ISO 3166-1 alpha-2)
State/ProvinceMoscowРегион
CityMoscowГород
OrganizationCompany NameНазвание организации
  1. Нажать 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.

Процедура создания серверного сертификата

  1. Перейти в System > Certificates, вкладка Certificates
  2. Нажать Add/Sign
  3. Заполнить параметры:
ПараметрЗначениеОписание
MethodCreate an internal CertificateСоздание нового сертификата
Descriptive nameWebGUI-CertИмя для идентификации в интерфейсе
Certificate authorityInternal-CACA, который подпишет этот сертификат
Key typeRSAТип ключа
Key length2048Длина ключа
Digest AlgorithmSHA256Алгоритм хэширования
Lifetime398Срок действия в днях
Common Namefirewall.example.comFQDN сервера
Certificate TypeServer CertificateТип сертификата
  1. В секции Alternative Names добавить все DNS-имена и IP-адреса, по которым будет доступен сервис
  2. Нажать Save

Внимание:

Современные браузеры требуют наличия Subject Alternative Name (SAN) в сертификате. Поле Common Name (CN) используется только как запасной вариант в устаревших клиентах. Необходимо добавить FQDN и IP-адреса в секцию Alternative Names.

Привязка сертификата к веб-интерфейсу

После создания серверного сертификата его необходимо назначить веб-интерфейсу:

  1. Перейти в System > Advanced, вкладка Admin Access
  2. В поле SSL/TLS Certificate выбрать созданный сертификат
  3. Нажать Save
  4. Веб-интерфейс перезагрузится с новым сертификатом

Срок действия серверных сертификатов

Apple и другие производители браузеров ограничивают максимальный срок действия публичных TLS-сертификатов до 398 дней. Хотя для внутренних сертификатов это ограничение не является обязательным, рекомендуется придерживаться аналогичных сроков для упрощения ротации и снижения рисков компрометации.

Создание клиентских сертификатов

Клиентские сертификаты используются для аутентификации пользователей при подключении к VPN (OpenVPN, IPsec) и для доступа к ресурсам через Captive Portal.

Процедура создания клиентского сертификата

  1. Перейти в System > Certificates, вкладка Certificates
  2. Нажать Add/Sign
  3. Заполнить параметры:
ПараметрЗначениеОписание
MethodCreate an internal CertificateСоздание нового сертификата
Descriptive nameuser-ivanovИмя пользователя или устройства
Certificate authorityVPN-CACA для VPN-сертификатов
Key typeRSAТип ключа
Key length2048Длина ключа
Digest AlgorithmSHA256Алгоритм хэширования
Lifetime365Срок действия (1 год)
Common Nameuser-ivanovИдентификатор пользователя
Certificate TypeUser CertificateТип сертификата
  1. Нажать Save

При использовании OpenVPN клиентский сертификат может быть привязан к учётной записи пользователя в User Manager. Это обеспечивает двухфакторную аутентификацию - сертификат (что-то, что есть у пользователя) и пароль (что-то, что знает пользователь).

Создание сертификата через User Manager

Альтернативный способ создания клиентского сертификата - через учётную запись пользователя:

  1. Перейти в System > User Manager
  2. Редактировать учётную запись пользователя
  3. В секции User Certificates нажать Add
  4. Заполнить параметры сертификата
  5. Сохранить

Этот метод автоматически привязывает сертификат к пользователю, что упрощает управление при большом количестве VPN-пользователей.

Импорт внешних сертификатов

pfSense позволяет импортировать сертификаты, полученные от внешних центров сертификации (DigiCert, Sectigo, Let’s Encrypt и др.). Импорт необходим в следующих случаях:

  • Использование публично доверенных сертификатов для веб-интерфейса
  • Интеграция с корпоративной PKI
  • Миграция с другого межсетевого экрана

Процедура импорта CA

  1. Перейти в System > Certificates, вкладка Authorities
  2. Нажать Add
  3. Выбрать метод Import an existing Certificate Authority
  4. Вставить содержимое CA-сертификата в формате PEM в поле Certificate data
  5. При необходимости импортировать закрытый ключ CA (требуется для подписи новых сертификатов)
  6. Нажать Save

Процедура импорта сертификата

  1. Перейти в System > Certificates, вкладка Certificates
  2. Нажать Add/Sign
  3. Выбрать метод Import an existing Certificate
  4. Вставить сертификат в формате PEM в поле Certificate data
  5. Вставить закрытый ключ в поле Private key data
  6. Нажать Save

Внимание:

Закрытый ключ не должен быть защищён паролем (passphrase). Если ключ зашифрован, необходимо предварительно снять защиту командой openssl rsa -in encrypted.key -out decrypted.key.

Списки отзыва сертификатов (CRL)

Certificate Revocation List (CRL) - механизм отзыва скомпрометированных или недействительных сертификатов. При подключении клиента сервис проверяет сертификат по CRL и отклоняет соединение, если сертификат отозван.

Создание CRL

  1. Перейти в System > Certificates, вкладка Certificate Revocation
  2. Нажать Add напротив нужного CA
  3. Выбрать метод Create an internal Certificate Revocation List
  4. Указать имя CRL
  5. Нажать Save

Отзыв сертификата

  1. Открыть CRL для редактирования
  2. В секции Choose a Certificate to Revoke выбрать сертификат
  3. Указать причину отзыва (Key Compromise, CA Compromise, Cessation of Operation и др.)
  4. Нажать 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

  1. Перейти в System > Package Manager, вкладка Available Packages
  2. Найти пакет acme
  3. Нажать Install и подтвердить установку

После установки пакет доступен в меню Services > Acme Certificates.

Регистрация аккаунта Let’s Encrypt

  1. Перейти в Services > Acme Certificates, вкладка Account Keys
  2. Нажать Add
  3. Заполнить параметры:
ПараметрЗначение
NameLetsEncrypt-Prod
ACME ServerLet’s Encrypt Production ACME v2
Email Addressadmin@example.com
  1. Нажать Create new account key
  2. Нажать Register ACME account key
  3. Нажать Save

Для тестирования рекомендуется сначала использовать Let’s Encrypt Staging для избежания ограничений на количество запросов.

Создание сертификата через ACME

  1. Перейти на вкладку Certificates
  2. Нажать Add
  3. Заполнить параметры:
ПараметрЗначениеОписание
Namefirewall-acmeИмя сертификата
StatusActiveСтатус
Acme AccountLetsEncrypt-ProdРанее созданный аккаунт
Private Key2048-bit RSAТип и длина ключа
Domain SAN listfirewall.example.comСписок доменных имён
  1. В секции Domain SAN list выбрать метод валидации:
Метод валидацииКогда использовать
Standalone HTTP serverПорт 80 доступен из интернета, нет веб-сервера
Standalone TLS-ALPNПорт 443 доступен, нет других TLS-сервисов
DNS-ManualРучное добавление DNS-записи (не подходит для автоматизации)
DNS-Cloudflare/Route53/etc.Автоматическая DNS-валидация через API провайдера
  1. Нажать Save
  2. Нажать 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 AuthCAВерификация LDAP-сервера при подключении
Syslog (TLS)Серверный/CAШифрование передачи логов

Обновление и ротация сертификатов

Ручное обновление

При приближении срока истечения сертификата необходимо создать новый сертификат с теми же параметрами и заменить старый во всех сервисах, которые его используют. pfSense отображает дату истечения в списке сертификатов и предупреждает об истекающих сертификатах в Dashboard.

Рекомендации по ротации

Тип сертификатаРекомендуемый срокОбоснование
CA10-20 летЗамена CA требует переиздания всех сертификатов
Серверный1-2 годаСоответствие требованиям браузеров
Клиентский1 годРегулярная ротация для снижения рисков
ACME (Let’s Encrypt)90 дней (автоматически)Установлено Let’s Encrypt

Мониторинг истечения

pfSense отображает статус сертификатов в веб-интерфейсе:

  • Зелёный - сертификат действителен
  • Жёлтый - срок действия истекает в ближайшие 30 дней
  • Красный - сертификат истёк

Рекомендуется настроить мониторинг через SNMP или интеграцию с Wazuh для автоматического оповещения об истекающих сертификатах.

Устранение неполадок

Ошибка “Certificate chain is incomplete”

Проблема возникает, когда клиент не может построить цепочку доверия от серверного сертификата до корневого CA.

Решение:

  1. Убедиться, что CA-сертификат установлен на клиентском устройстве
  2. При использовании промежуточного CA - убедиться, что вся цепочка (промежуточный + корневой CA) передаётся клиенту
  3. Проверить, что в настройках сервиса указан корректный CA

Ошибка “Certificate has expired”

Сертификат с истекшим сроком действия отклоняется клиентами и сервисами.

Решение:

  1. Создать новый сертификат с актуальными сроками
  2. Заменить сертификат во всех сервисах, которые его используют
  3. Перезапустить сервисы для применения нового сертификата

Ошибка “NET::ERR_CERT_AUTHORITY_INVALID”

Браузер не доверяет CA, выдавшему сертификат.

Решение для внутреннего CA:

  1. Экспортировать CA-сертификат из pfSense
  2. Установить его в хранилище доверенных корневых сертификатов операционной системы или браузера
  3. Перезапустить браузер

OpenVPN не принимает сертификат

Проблема может быть вызвана несколькими причинами:

  • Тип сертификата (Server/User) не соответствует роли в VPN
  • Сертификат подписан CA, отличным от указанного в настройках OpenVPN
  • Сертификат отозван через CRL

Для диагностики следует проверить логи OpenVPN в Status > System Logs, вкладка OpenVPN.

Примечания по миграции

При миграции с другого межсетевого экрана или при обновлении pfSense следует учитывать:

  • Экспортировать все CA, сертификаты и CRL до миграции
  • Сертификаты экспортируются в формате PEM через значок загрузки в Certificate Manager
  • Закрытые ключи экспортируются отдельно и должны храниться в защищённом месте
  • После импорта необходимо заново привязать сертификаты к сервисам (OpenVPN, IPsec, Web GUI)
  • Резервная копия конфигурации pfSense включает все сертификаты и ключи - при восстановлении из бэкапа повторный импорт не требуется

Связанные разделы

Last updated on