Настройка и подготовка сертификатов#
Для возможности использования TLS/SSL-соединения необходимо создать или подготовить сертификаты.
TLS и его предшественник SSL — это криптографические протоколы, которые обеспечивают защищенную передачу данных между узлами в интернете. TLS и SSL используют асимметричное шифрование для аутентификации, симметричное шифрование для конфиденциальности и коды аутентичности сообщений для сохранения их целостности.
Шлюз безопасности SOWA поддерживает следующие TLS/SSL-соединения:
Клиент — SOWA;
SOWA — backend;
SOWA — kafka;
SOWA — MQ.
Для установления двустороннего TLS/SSL соединения с клиентом потребуется 2 сертификата:
клиентский сертификат;
серверный сертификат.
Процесс получения клиентского сертификата#
Клиентский сертификат можно получить путем обращения к администраторам СПО, которые будут взаимодействовать с SOWA. Клиентский сертификат должен содержать в себе всю цепочку сертификатов. Проверка клиентского сертификата, уровень вложенности и указание имени клиентского сертификата объявляются в файле конфигурирования профиля.
В поле client_certificate необходимо указать:
Сконвертировать клиентский .pem сертификат в формат .cer.
Открыть получившийся файл (в нем находится вся цепочка сертификатов) и извлечь из цепочки рутовый сертификат и все промежуточные.
Полученные сертификаты конвертировать в .pem и объединить их в один файл, используя команду:
cat ***.pem ***.pem csbapigwift.pem > client_certificate.pemЗначением параметра verify_depth будет являться уровень вложенности полученного сертификата.
service: service_<type>_proxy - id: <name> ... listen: - port: <port> ssl: ... verify_client: 'on' verify_depth: 3 client_certificate: client_certificate.pem ...
Процесс создания серверного сертификата#
Важно!
Все сертификаты должны быть типа PEM и не содержать пароли для их открытия.
Ниже приведены примеры команд и настроек для создания сертификатов. При создании сертифкатов необходимо использовать актуальные для вашего окружения данные.
Для того чтобы использовать TLS/SSL-соединение, необходимо подготовить сертификаты следующим образом:
Сгенерировать закрытый ключ:
cd ~ mkdir sowa_nonproduction cd sowa_nonproduction openssl genrsa -out SOWA_NONPRODUCTION.key 2048 -days 824Проверить консистентность ключа:
openssl rsa -in SOWA_NONPRODUCTION.key -checkСоздать пустой файл и поместить в него параметры сертификата:
touch req.cfgНаполнить файл req.cfg:
O = CompanyName OU = 00CA CN = SOWA_NONPRODUCTION [v3_req] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth, clientAuth subjectAltName = @alt_names [alt_names] DNS.1 = *.sigma.example.ru DNS.2 = *.ca.example.ru DNS.3 = *.vm.test.cloud.example.ru DNS.4 = *.vm.test.cloud.example.ru DNS.5 = SOWA_NONPRODUCTION DNS.6 = *.testonline.example.ruСоздать запрос на подпись открытого ключа:
openssl req -new -key \ SOWA_NONPRODUCTION.key -config req.cfg -out \ SOWA_NONPRODUCTION.csrПросмотреть содержимое запроса на подпись:
openssl req -in SOWA_NONPRODUCTION.csr -noout –textПодписать сертификат. Это можно сделать через УЦ или самостоятельно:
openssl x509 -req -days 365 -in \ SOWA_NONPRODUCTION.csr -signkey \ SOWA_NONPRODUCTION.key -out \ SOWA_NONPRODUCTION_cert.pemЕсли по какой-либо причине сертификат оказался в формате DER, необходимо сконвертировать его в формат PEM следующей командой:
openssl x509 -in \ SOWA_NONPRODUCTION_cert.cer -inform DER -out \ SOWA_NONPRODUCTION_cert.pem -outform PEMСодержимое получившегося сертификата можно посмотреть с помощью команды:
openssl x509 -in SOWA_NONPRODUCTION_cert.pem -text –nooutСерверный сертификат готов. Его необходимо указать в конфигурационном файле:
service:
service_<type>_proxy
- id: <name>
...
listen:
- port: <port>
ssl:
...
certificate: SOWA_NONPRODUCTION_cert.pem
certificate_key: SOWA_NONPRODUCTION.key
...