Настройка и подготовка сертификатов#

Для возможности использования TLS/SSL-соединения необходимо создать или подготовить сертификаты.

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

Platform V SOWA поддерживает следующие TLS/SSL-соединения:

  • Клиент — SOWA;

  • SOWA — backend;

  • SOWA — kafka;

  • SOWA — MQ.

Для установления двустороннего TLS/SSL соединения с клиентом потребуется 2 сертификата:

  • клиентский сертификат;

  • серверный сертификат.

Процесс получения клиентского сертификата#

Клиентский сертификат можно получить путем обращения к администраторам СПО, которые будут взаимодействовать с SOWA. Клиентский сертификат должен содержать в себе всю цепочку сертификатов. Проверка клиентского сертификата, уровень вложенности и указание имени клиентского сертификата объявляются в файле конфигурирования профиля.

В поле client_certificate необходимо указать:

  1. Сконвертировать клиентский .pem сертификат в формат .cer.

  2. Открыть получившийся файл (в нем находится вся цепочка сертификатов) и извлечь из цепочки рутовый сертификат и все промежуточные.

  3. Полученные сертификаты конвертировать в .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-соединение, необходимо подготовить сертификаты следующим образом:

  1. Сгенерировать закрытый ключ:

    cd ~
    mkdir sowa_nonproduction
    cd sowa_nonproduction
    openssl genrsa -out SOWA_NONPRODUCTION.key 2048 -days 824
    
  2. Проверить консистентность ключа:

    openssl rsa -in SOWA_NONPRODUCTION.key -check
    
  3. Создать пустой файл и поместить в него параметры сертификата:

    touch req.cfg
    
  4. Наполнить файл 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 = *.xxx.example.ru
    DNS.2 = *.xxy.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
    
  5. Создать запрос на подпись открытого ключа:

    openssl req -new -key \
    SOWA_NONPRODUCTION.key -config req.cfg -out \
    SOWA_NONPRODUCTION.csr
    
  6. Просмотреть содержимое запроса на подпись:

    openssl req -in SOWA_NONPRODUCTION.csr -noout –text
    
  7. Подписать сертификат. Это можно сделать через УЦ или самостоятельно:

    openssl x509 -req -days 365 -in \
    SOWA_NONPRODUCTION.csr -signkey \
    SOWA_NONPRODUCTION.key -out \
    SOWA_NONPRODUCTION_cert.pem
    
  8. Если по какой-либо причине сертификат оказался в формате DER, необходимо сконвертировать его в формат PEM следующей командой:

    openssl x509 -in \
    SOWA_NONPRODUCTION_cert.cer -inform DER -out \
    SOWA_NONPRODUCTION_cert.pem -outform PEM
    
  9. Содержимое получившегося сертификата можно посмотреть с помощью команды:

    openssl x509 -in SOWA_NONPRODUCTION_cert.pem -text –noout
    
  10. Серверный сертификат готов. Его необходимо указать в конфигурационном файле:

service:
  service_<type>_proxy
   - id: <name>
   ...
   listen:
    - port: <port>
    ssl:
     ...
     certificate: SOWA_NONPRODUCTION_cert.pem
     certificate_key: SOWA_NONPRODUCTION.key
   ...