Добавление SSL-сертификата

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

SSL-сертификат — это цифровой документ, позволяющий использовать протокол безопасной связи SSL (Secure Sockets Layer). Применение SSL-сертификата предоставляет следующие гарантии для пользователей:

  • Ресурс, на котором расположена система, является подлинным и не принадлежит злоумышленникам.

  • Передаваемая информация защищена от злоумышленников благодаря установке зашифрованного соединения между ресурсом и браузером пользователя.

Для работы с системой вы можете добавить доверенный или самоподписанный сертификат.

Добавление сертификатов выполняется после установки R-Vision.

Добавление доверенного SSL-сертификата

Доверенный SSL-сертификат — это сертификат, заверенный подписью удостоверяющего центра (УЦ). Такой сертификат показывает, что ресурс был проверен УЦ на предмет подлинности и безопасности работы.

В представленной инструкции в качестве примера используются файлы со следующими названиями:

  • ssl.conf — файл конфигурации SSL-сертификата;

  • private.key — файл приватного ключа SSL-сертификата;

  • request.csr — файл запроса на выпуск SSL-сертификата;

  • rootCA.crt — файл корневого сертификата от УЦ;

  • rootCA.key — файл ключа корневого сертификата от УЦ;

  • domain.crt — файл доверенного SSL-сертификата.

Чтобы добавить доверенный SSL-сертификат, выполните на управляющем узле кластера Kubernetes следующие действия:

  1. Создайте файл ssl.conf с описанием конфигурации SSL-сертификата.

  2. Сгенерируйте файлы приватного ключа private.key и запроса на выпуск сертификата request.csr:

    openssl req -new -config ssl.conf -keyout private.key -out request.csr
  3. Если у вас есть корневой сертификат rootCA.crt от УЦ и его ключ rootCA.key, подпишите с его помощью запрос request.csr:

    openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in request.csr -out domain.crt -days 365 -CAcreateserial

    Если в конфигурации SSL-сертификата указано поле subjectAltName, то в конец команды необходимо добавить -extfile ssl.conf -extensions req_ext:

    openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in request.csr -out domain.crt -days 365 -CAcreateserial -extfile ssl.conf -extensions req_ext

    В результате будет создан доверенный сертификат domain.crt.

    Если у вас нет корневого сертификата, передайте запрос request.csr удостоверяющему центру для создания доверенного сертификата.
  4. Создайте секрет в кластере Kubernetes:

    kubectl create secret tls secret-name --namespace siem --key private.key --cert domain.crt

    Здесь secret-name — имя секрета; siem — пространство имен, в котором установлена R-Vision SIEM.

  5. Внесите изменения в Ingress кластера Kubernetes.

    Для изменения Ingress потребуется список зарезервированных доменов для системы. Рекомендуется подготовить его заранее.

    Изменить Ingress можно одним из следующих способов:

    • Изменение Ingress вручную:

      1. Откройте Ingress в режиме редактирования:

        kubectl edit ingress evo.core.host-app-host-app
      2. Добавьте в поле spec перед rules следующие строки:

        tls:
          - hosts:
              - <доменное имя 1>
              - <доменное имя 2>
            secretName: secret-name

        Здесь hosts — доменные имена, зарезервированные для системы; secretName — имя секрета, созданного на шаге 4.

    • Изменение Ingress через helm-чарты:

      1. Создайте файл values.yaml со следующим содержанием:

        modules:
          evo.core:
            host-app:
              ingress:
                ingresses:
                  host-app:
                    tls:
                      - hosts:
                          - <доменное имя 1>
                          - <доменное имя 2>
                        secretName: secret-name

        Здесь hosts — доменные имена, зарезервированные для системы; secretName — имя секрета, созданного на шаге 4.

      2. Обновите сервис evo.core.host-app:

        helm upgrade -n siem evo.core.host-app /opt/r-vision/common/helm/r-huc --reuse-values --values values.yaml

        Здесь siem — пространство имен, в котором установлена R-Vision SIEM; /opt/r-vision/common/helm/r-huc — расположение чарта R-HUC.

Добавление самоподписанного SSL-сертификата

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

В представленной инструкции в качестве примера используются файлы со следующими названиями:

  • ssl.conf — файл конфигурации SSL-сертификата;

  • private.key — файл приватного ключа SSL-сертификата;

  • request.csr — файл запроса на выпуск SSL-сертификата;

  • domain.crt — файл самоподписанного SSL-сертификата.

Чтобы добавить самоподписанный SSL-сертификат, выполните на управляющем узле кластера Kubernetes следующие действия:

  1. Создайте файл ssl.conf с описанием конфигурации SSL-сертификата.

  2. Сгенерируйте файлы приватного ключа private.key и запроса на выпуск сертификата request.csr:

    openssl req -new -config ssl.conf -keyout private.key -out request.csr
  3. Создайте самоподписанный сертификат domain.crt:

    openssl x509 -signkey private.key -in request.csr -req -days 365 -out domain.crt

    Если в конфигурации SSL-сертификата указано поле subjectAltName, то в конец команды необходимо добавить -extfile ssl.conf -extensions req_ext:

    openssl x509 -signkey private.key -in request.csr -req -days 365 -out domain.crt -extfile ssl.conf -extensions req_ext
  4. Создайте секрет в кластере Kubernetes:

    kubectl create secret tls secret-name --namespace siem --key private.key --cert domain.crt

    Здесь secret-name — имя секрета; siem — пространство имен, в котором установлена R-Vision SIEM.

  5. Внесите изменения в Ingress кластера Kubernetes.

    Для изменения Ingress потребуется список зарезервированных доменов для системы. Рекомендуется подготовить его заранее.

    Изменить Ingress можно одним из следующих способов:

    • Изменение Ingress вручную:

      1. Откройте Ingress в режиме редактирования:

        kubectl edit ingress evo.core.host-app-host-app
      2. Добавьте в поле spec перед rules следующие строки:

        tls:
          - hosts:
              - <доменное имя 1>
              - <доменное имя 2>
            secretName: secret-name

        Здесь hosts — доменные имена, зарезервированные для системы; secretName — имя секрета, созданного на шаге 4.

    • Изменение Ingress через helm-чарты:

      1. Создайте файл values.yaml со следующим содержанием:

        modules:
          evo.core:
            host-app:
              ingress:
                ingresses:
                  host-app:
                    tls:
                      - hosts:
                          - <доменное имя 1>
                          - <доменное имя 2>
                        secretName: secret-name

        Здесь hosts — доменные имена, зарезервированные для системы; secretName — имя секрета, созданного на шаге 4.

      2. Обновите сервис evo.core.host-app:

        helm upgrade -n siem evo.core.host-app /opt/r-vision/common/helm/r-huc --reuse-values --values values.yaml

        Здесь siem — пространство имен, в котором установлена R-Vision SIEM; /opt/r-vision/common/helm/r-huc — расположение чарта R-HUC.

Конфигурация SSL-сертификата

Конфигурация SSL-сертификата содержит набор обязательных и опциональных полей.

Пример 1. Пример конфигурации SSL-сертификата
# Полное доменное имя ресурса системы.
FQDN = <FQDN-адрес узла>

# Название организации.
ORGNAME = <название организации>

# (опционально) Альтернативные DNS-имена и IP-адреса, которые должны быть связаны с сертификатом.
ALTNAMES = DNS:<DNS-имя 1>,DNS:<DNS-имя 2>,IP:<IP-адрес 1>,IP:<IP-адрес 2>

# Настройки для создания запроса сертификата CSR. Изменения не требуются.
[ req ]
default_bits = 2048
default_md = sha256
prompt = no
encrypt_key = no
distinguished_name = dn
req_extensions = req_ext

# Настройки уникального имени для сертификата, которые идентифицируют владельца сертификата.
[ dn ]
C = CH
O = $ORGNAME
CN = $FQDN

# (опционально) Расширения, которые будут добавлены в запрос на сертификат.
[ req_ext ]
subjectAltName = $ALTNAMES

Общие поля

Общие поля задаются без привязки к какому-либо разделу полей.

Поле Описание Обязательное поле

FQDN

Полное доменное имя ресурса, на котором расположена система.

да

ORGNAME

Название организации, ответственной за ресурс.

да

ALTNAMES

Альтернативные IP-адреса и DNS-имена, которые должны быть связаны с сертификатом. Поле указывается при задании subjectAltName = $ALTNAMES в блоке req_ext.

нет

Блок полей req

В этом блоке задаются настройки для создания запроса сертификата CSR.

Рекомендуется оставлять этот блок без изменений.
Поле Описание Обязательное поле

default_bits

Указывает длину ключа сертификата в битах. Рекомендуется устанавливать длину 2048 бит.

да

default_md

Определяет алгоритм хеширования для подписания сертификата. Рекомендуется использовать алгоритм SHA-256.

да

prompt

Определяет, нужно ли запрашивать ввод данных для полей в блоках dn и req_ext. Рекомендуется устанавливать значение no. В этом случае ввод данных в указанных блоках не запрашивается. Вместо этого используются предопределенные значения в полях distinguisged_name и req_extensions.

да

encrypt_key

Определяет, нужно ли использовать ключ шифрования. Рекомендуется устанавливать значение no. В этом случае ключи шифрования не применяются.

да

distinguished_name

Указывает на блок полей, где задаются поля X.509. Рекомендуется указывать в поле ссылку на блок dn.

да

req_extensions

Указывает на блок полей, где задаются расширения. Рекомендуется указывать в поле ссылку на блок req_ext.

нет

Блок полей dn

Этот блок задает отличительное имя (Distinguished Name), идентифицирующее владельца сертификата.

Поле Описание Обязательное поле

C

Страна, в которой находится организация.

да

O

Название организации, ответственной за ресурс. Рекомендуется использовать значение поля ORGNAME.

да

CN

Общее имя (Common Name) ресурса, на которое будет выписан сертификат. Рекомендуется использовать значение поля FQDN.

да

Блок полей req_ext

Этот блок определяет расширения, которые будут добавлены в запрос на сертификат.

Поле Описание Обязательное поле

subjectAltName

Позволяет сертификату поддерживать несколько доменных имен и IP-адресов. Должен ссылаться на поле ALTNAMES.

нет