Настройка взаимодействия с NATS по TLS
Опубликовано Илья Харченко on 2024-02-28 17:56
|
||||||||||||||
Внимание: Сертификаты необходимо выпускать строго на технологическом УЦ. Использовать 1 набор TLS сертификатов для аккредитованного и технологического УЦ нельзя!!! Также необходимо разделять DN для клиентских сертификатов, используемых в NATS TLS в технологическом УЦ и аккредитованном! Предпологается что перед выпусом данных сертификатов, уже настроен технологический УЦ, в конфигурации c NATS без TLS. Последовательность действий
Создание запроса на сертификат рекомендуем производить на машине, на которой непосредственно располагается соответствующий компонент УЦ, чтобы избежать в дальнейшем процедуры переноса ЗК. Создание запроса и выпуск сертификатов могут выполнены как через веб интерфейс, так и с помощью утилиты pkica Важно: для технологического УЦ, чтобы разрешить выпуск не только квалифицированных сертификатов правим настройки ЦС Процедура подробно описана в пункте 1.2.6. Руководства по эксплуатации.
Выпуск сертификатов: Пример команд для выпуска сертификата, указаного пункте 1 списка сертификатов с ипользованием pkica Создаем запрос:
Если Вы хотите добавить несколько DNS имен в SAN то запрос создание запроса должно выглядеть так: pkica ca new-cert-req -o<путь к файлу запроса на сертификат> -t 1.2.643.2.2.46.0.3 -s 'CN=Вебсервер,1.2.643.2.2.44.5="<DnsName1>;<DnsName2>;<DnsName3>"' -c<Имя контейнера ЗК> --no-pin -k KeyExchange Выпускаем сертификат
Устанавливаем сертификат с привязкой к ЗК(обязательно под тем-же пользователем под которым создавали запрос)
Пример выпуска сертификата, указаного пункте 1 списка сертификатов с ипользованием веб интерфейса Создаем пользователя и выпускаем ему сертификат, по шаблону Сервер TLS, не забывая указать верные SAN Затем создаем pfx и устанавливаем его на УЦ под тем пользователем, под которым запускается демон Nats. Важно: при установке pfx не задаем пароль.
Для сертификатов, описанных в пунктах 2-6 списка сертификатов, отличаться будет только процедура создания запроса, мы будем использовать другой шаблон и для каждого пункта указывать свой уникальный DN. Процесс выпуска и установки отличаться не будет. Важно: Данные DN должны быть уникальны для каждого сертификата (2-6) и их необходимо будет указать в разделе users, nats.conf(пример данного раздела будет приведен ниже) желательно не добавлять много компонентов имени, чтобы не переусложнить конфиг. Так-же не должно быть компонентов: ИНН\ИНН ЮЛ\СНИЛ\ОГРН.\ОГРНИП
Пример команд для создания запроса на сертификат, описанных в пунктах 2-6 списка сертификатов
Пример выпуска сертификатов, указаных пункте 2-6 списка сертификатов с ипользованием веб интерфейса Создаем пользователя и выпускаем ему сертификат, по шаблону Клиент TLS Затем создаем pfx и устанавливаем его на УЦ под тем пользователем, под которым запускается демон соответсвующего сервиса. Важно: при установке pfx не задаем пароль.
Редактируем файл nats.conf: Сертификаты, описанные в пунктах 1 и 2, указываются в виде пути к файлу сертификата (путь прописан 2 раза –это нормально, так и нужно прописывать) в следующих разделах Для серверного сертификата (описан в пункте 1 списка сертификатов), путь указывается в данном разделе:
Для клиентского сертификата (описан в пункте 2 списка сертификатов), путь указывается в данном разделе:
корректный DN клиентского сертификата также должен быть прописан в разделе users, что будет рассмотрено ниже
Для сертификатов указанных в пунктах 2-6 списка сертификатов, необходимо прописать их DN в разделе users файла nats.conf По умолчанию данный раздел выглядит так:
Не забываем добавить корректный порт и DNS имя (Именно DNS имя, а не IP) в раздел listen
Правим файлы appsettings.json Теперь в файлах appsettings.json соответствующих сервисов, в разделах NATS/STAN задаем отпечаток соответствующего им tlsсертификата(смотри список сертификатов) и выставляем значение параметра "Secure": true. Не забываем что в разделе URL должно быть указано DNS имя а не IP Пример:
Запускаем сервисы После правки необходимых конфигов. необходимо остановить демоны сервисов УЦ(или процессы если запущено вручную) Производим пробный запуск NATS c TLS через bash Пример /opt/cpca_tls/nats-streaming/nats-streaming-server -sc /opt/cpca_tls/nats-streaming/nats.conf Убеждаемся, что Nats успешно запустился -завершаем процесс
Если ранее для NATS без TLS был создан демон, необходимо отредактировать его настройки, указав путь к новому файлу конфигурации. Так-же можно создать новый демон, отключив автозагрузку "старого"
Запускаем демоны сервисов УЦ, проверяя что соединение успешно установилось
Важно: После того как мы включим TLS для NATS, через pkica нельзя будет выпускать сертификаты с неподписанными запросами. Подписать запрос необходимо сертификатом оператора. Пример подписи с использование cryptcp: cryptcp -sign -thumbprintDF861BEA1B3066A99B77A1D39FC1B804A718FCDB -der <путь к файлу запроса> <путь к подписанному файлу>
В такой ситуации новый crl не сможет выпуститься т.к. не построится TLS между компонентами Необходимо выполнить следующие действия:
Необходимо остановить демоны сервисов УЦ+ Nats(или процессы если запущено вручную) Через bash выполняем команду ручного запуска Nats c конфигом nats.no-tls.conf
Послеуспешногозапуска NATS, правимфайл appsettings.json в CryptoPro.Ca.Service, убирая требование Secure Также правим appsettings.json в pkica тем же образом
через bash запускаем исполняемый файл CryptoPro.Ca.Service
Затем загружаем ключи (при необходимости) и вручную выпускаем CRL, указывая директорию публикации
После успешного выпуска crl, распространяем его на все компоненты УЦ. Останавливаем CryptoPro.Ca.Service и Nats Включаем в файлах конфигурации appsettings.json требование Secure Последовательно запускаем Nats c TLS и остальные демоны УЦ
| ||||||||||||||
|