Шифрование SSL

ADB Control

Для установки защищенного соединения между web-сервером ADB Control и клиентами можно использовать протокол HTTPS, поддерживающий технологию шифрования SSL. Для настройки доступа к ADB Control через HTTPS выполните следующие шаги:

  1. Откройте конфигурационную страницу сервиса ADB Control в ADCM.

  2. Установите флаг Show advanced.

  3. Переведите переключатель SSL в активное состояние.

  4. Заполните следующие поля, если вы планируете использовать собственные сертификаты.

    ВАЖНО

    Если настройки не будут заполнены, ADB Control создаст сертификаты самостоятельно.

    Параметр Описание Значение по умолчанию

    CA certificate

    Содержимое сертификата центра сертификации (Certificate Authoruty, CA) в формате CRT (файл *.crt)

     — 

    Server certificate

    Содержимое серверного сертификата в формате CRT (файл *.crt)

     — 

    Server private key

    Содержимое серверного приватного ключа (файл *.key)

     — 

    Verify system endpoints' certificates

    Флаг, определяющий необходимость проверки сертификатов системных конечных точек.

    Перед использованием опции Verify system endpoints' certificates в конфигурации ADB Control с самоподписанными (self-signed) сертификатами убедитесь, что в хранилище доверенных корневых сертификатов ОС добавлены корневой и промежуточные CA-сертификаты.

    Чтобы использовать опцию Verify system endpoints' certificates с вашими собственными сертификатами, для успешной верификации добавьте IP-адрес ADB Control в поле CN файла san.cnf (SAN), а также исключите DNS из секции alt_names (оставив только IP)

    false

    Server JKS keystore path

    Путь к keystore-файлу в формате JKS для серверной части ADB Control. Например, /opt/adcc/ssl/keystore.jks

     — 

    Server JKS keystore password

    Пароль для доступа к keystore-файлу Server JKS keystore path

     — 

    Server JKS truststore path

    Путь к truststore-файлу в формате JKS для серверной части ADB Control. Например, /opt/adcc/ssl/truststore.jks

     — 

    Server JKS truststore password

    Пароль для доступа к truststore-файлу Server JKS truststore path

     — 

    Client JKS keystore path

    Путь к keystore-файлу в формате JKS для клиентской части ADB Control (агентов ADB Control/ADBM). Например, /opt/ssl/keystore.jks

     — 

    Client JKS keystore password

    Пароль для доступа к keystore-файлу Client JKS keystore path

     — 

    Client JKS truststore path

    Путь к truststore-файлу в формате JKS для клиентской части ADB Control (агентов ADB Control/ADBM). Например, /opt/ssl/truststore.jks

     — 

    Client JKS truststore password

    Пароль для доступа к truststore-файлу Client JKS truststore path

     — 

    Заполнение параметров SSL
    Заполнение параметров SSL
    РЕКОМЕНДАЦИЯ
    • Файлы adcc_ca.crt, adcc.crt и adcc.key автоматически создаются на хосте, где развернут сервис ADB Control. По умолчанию они расположены в директории /opt/adcc/ssl. Эти файлы можно использовать исключительно для целей тестирования.

    • В production-системах необходим доверенный центр сертификации (Certificate Authority, CA) для подписи сертификатов. Для создания и регистрации SSL-сертификатов можно использовать утилиту openssl.

    • В случае расширения кластера ADB необходимо перегенерировать сертификаты, чтобы добавить соответствующие ServerAltNames для новых хостов.

    • При подключении внешнего кластера ADB для мониторинга в ADB Control, где настроено использование SSL, необходимо указать сертификаты с ServerAltNames хостов обоих кластеров в настройках основного и внешнего кластера ADB.

  5. Нажмите Save.

  6. Примените действие Reconfigure & Restart к сервису ADB Control.

    Применение изменений
    Применение изменений

После успешного выполнения описанных выше шагов порт сервера ADB Control (по умолчанию 81) будет использоваться для SSL-соединения. Адрес подключения будет выглядеть следующим образом: https://<ADB Control IP address>:81.

Внешние базы данных

Начиная с версии ADB Control 4.11.0 в случае включения SSL описанным выше способом SSL-шифрование автоматически используется при подключении к внутренним базам данных ADB Control и ADBM. Если в ADB Control используются внешние базы данных Metrics DB (ClickHouse), Query DB (PostgreSQL) или Offload DB (PostgreSQL) и/или в ADBM используется внешняя PostgreSQL, необходимо дополнительно выполнить настройку SSL-шифрования на их стороне.

PostgreSQL

  1. Укажите следующие параметры в файле postgresql.conf:

    ssl = on
    ssl_cert_file = '<server_crt_path>'
    ssl_key_file = '<server_key_path>'

    где:

    • <server_crt_path> — путь к серверному сертификату на стороне PostgreSQL. Например, /pg_data1/adpg14/server.crt.

    • <server_key_path> — путь к серверному приватному ключу на стороне PostgreSQL. Например, /pg_data1/adpg14/server.key.

  2. Добавьте строку следующего вида в файл ph_hba.conf:

    hostssl    all  all       0.0.0.0/0      md5
  3. Перезагрузите PostgreSQL для применения настроек.

  4. Чтобы убедиться в успешном включении SSL, можно подключиться к серверу PostgreSQL с помощью psql, указав в опции -U имя пользователя, в опции -d — название БД, в опции -h — адрес хоста:

    $ psql -U adcc -d metrics -h 10.92.41.125

    После ввода пароля пользователя на экране должна отобразиться следующая информация:

    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
  5. Выполните стандартные действия по настройке внешней базы данных PostgreSQL в ADB Control или ADBM. Для настройки Offload DB обратитесь к разделу Настройка политик запуска задач → Metrics offload.

ВАЖНО
  • Сертификат и ключ, указываемые в полях <server_crt_path> и <server_key_path> соответственно, необходимо сгенерировать самостоятельно либо воспользоваться теми, что формируются на стороне ADB Control (см. adcc.crt и adcc.key в разделе ADB Control). Но важно, чтобы в секции SSL для сервиса ADB Control были указаны те же сертификаты, что на стороне PostgreSQL в файле postgresql.conf.

  • В текущей реализации не предусмотрена аутентификация по клиентскому сертификату, обеспечивается только SSL-шифрование трафика. По этой причине в файле ph_hba.conf используется тип аутентификации md5, а не cert, а также не требуется для ввода сертификат CA ssl_ca_file в файле postgresql.conf.

  • Если в качестве внешней БД используется продукт ADPG, настройку SSL-шифрования в нем (включая формирование сертификатов) можно выполнить согласно инструкции Включение SSL-шифрования.

ClickHouse

С подробной инструкцией по настройке SSL можно ознакомиться в документации ClickHouse. Ниже приведены минимальные настройки:

  1. Внесите следующие изменения в серверный конфигурационный файл config.xml на каждой ноде кластера ClickHouse:

    • Сделайте доступными HTTPS-порты и отключите HTTP-порты:

      <https_port>8443</https_port>
      <!--<http_port>8123</http_port>-->
      <interserver_https_port>9010</interserver_https_port>
      <!--<interserver_http_port>9009</interserver_http_port>-->
    • Настройте секцию OpenSSL следующим образом:

      <openSSL>
          <server>
              <certificateFile>/etc/clickhouse-server/certs/server.crt</certificateFile>
              <privateKeyFile>/etc/clickhouse-server/certs/server.key</privateKeyFile>
              <verificationMode>relaxed</verificationMode>
              <caConfig>/etc/clickhouse-server/certs/ca.crt</caConfig>
              <cacheSessions>true</cacheSessions>
              <disableProtocols>sslv2,sslv3</disableProtocols>
              <preferServerCiphers>true</preferServerCiphers>
          </server>
          <client>
              <loadDefaultCAFile>false</loadDefaultCAFile>
              <caConfig>/etc/clickhouse-server/certs/ca.crt</caConfig>
              <cacheSessions>true</cacheSessions>
              <disableProtocols>sslv2,sslv3</disableProtocols>
              <preferServerCiphers>true</preferServerCiphers>
              <verificationMode>relaxed</verificationMode>
              <invalidCertificateHandler>
                  <name>RejectCertificateHandler</name>
              </invalidCertificateHandler>
          </client>
      </openSSL>

      где используются следующие пути, которые могут отличаться в вашем окружении:

      • /etc/clickhouse-server/certs/server.crt — путь к серверному сертификату на стороне ClickHouse.

      • /etc/clickhouse-server/certs/server.key — путь к серверному приватному ключу на стороне ClickHouse.

      • /etc/clickhouse-server/certs/ca.crt — путь к сертификату центра сертификации (Certificate Authority, CA) на стороне ClickHouse.

  2. Перезагрузите ClickHouse для применения настроек.

  3. Выполните стандартные действия по настройке внешней базы данных ClickHouse в ADB Control

ВАЖНО

Сертификат и ключ, указываемые в полях <certificateFile> и <privateKeyFile> соответственно, необходимо сгенерировать самостоятельно либо воспользоваться теми, что формируются на стороне ADB Control (см. adcc.crt и adcc.key в разделе ADB Control). Но важно, чтобы в секции SSL для сервиса ADB Control были указаны те же сертификаты, что на стороне ClickHouse в файле config.xml.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней