Сертификаты
Соединения между компонентами Sage происходят по защищённым соединениям с использованием сертификатов TLS.
Сертификаты по умолчанию
По умолчанию установщик Sage сгенерирует все необходимые (самоподписанные) сертификаты.
Cобственные сертификаты
Если вы хотите использовать собственные TLS-ключи и сертификаты, сохраните их в формате PEM и поместите в директорию /certificates/{{ sage_clan }}_{{ sage_env }}_{{ sage_datacenter }} на контрольном хосте. После того как вы запустите контейнер установщика, сертификаты будут туда смонтированы.
Если ваша организация использует промежуточные центры сертификации, то для корректной работы Sage необходимо включать во все сертификаты (кроме root-ca.pem) полную цепочку до корневого сертификата. Например, файл sage-internal.pem должен содержать последовательно склеенные PEM-блоки в следующем порядке:
- Сертификат сервера (выпущенный для Sage).
- Сертификаты промежуточных ЦС (intermediate CA).
Пример структуры файла sage-internal.pem:
-----BEGIN CERTIFICATE-----
( сертификат сервера sage-internal )
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
( промежуточный сертификат ЦС, выпустившего сертификат сервера )
-----END CERTIFICATE-----
Важно: порядок сертификатов в файле должен строго соблюдаться — от конечного (листового) к корневому. Нарушение порядка или отсутствие любого из звеньев цепочки приведёт к ошибкам проверки TLS-соединения со стороны клиентов.
Список необходимых файлов (приватные ключи и сертификаты):
-
root-ca.pem– корневой сертификат. -
{{ inventory_hostname }}.pem,{{ inventory_hostname }}-key.pem– сертификаты и приватные TLS-ключи для хостов с приложениями Sage.Необходимо выписать для всех хостов из файла
hosts.yml;ВниманиеСертификаты для хостов OpenSearch должны поддерживать как серверный, так и клиентский вариант EKU (Extended Key Usage):
serverAuth— только как TLS-сертификат сервера (HTTPS)clientAuth— только как TLS-сертификат клиента (mTLS)
Должны быть выписаны на FQDN хоста;
-
sage-{{ inventory_hostname }}.pem,sage-{{ inventory_hostname }}-key.pem– сертификаты и приватные TLS-ключи для балансировщиков Sage.Необходимо выписать на все хосты из группы
nginx;Сертификаты должны быть выписаны на доменные имена из списка:
{{ inventory_hostname }}– FQDN хоста;{{ sage_external_domain }}– внешний домен Sage;
-
sage-internal.pem,sage-internal-key.pem– сертификат и приватный TLS-ключ для внутреннего взаимодействия сервисов.к сведениюРекомендуется выписать wildcard-сертификат на имя
*.internal.{{ sage_external_domain }}, но при технической невозможности допускается выписать на список следующих имён:celestia-mage.internal.{{ sage_external_domain }}dp-connector.internal.{{ sage_external_domain }}dtracing-collector.internal.{{ sage_external_domain }}frost-rw.internal.{{ sage_external_domain }}grafana.internal.{{ sage_external_domain }}manul.internal.{{ sage_external_domain }}pager.internal.{{ sage_external_domain }}sauron.internal.{{ sage_external_domain }}
-
spirit.pem,spirit-key.pem– сертификат и приватный TLS-ключ для хостов в группеspirit_iam_apps.Сертификат должен быть выписан на доменные имена из списка:
-
{{ inventory_hostname }}– хост, на котором установлен Spirit IAM; -
{{ sage_spirit_external_domain }}– внешний домен Spirit IAM;
-
Файлы, содержащие сертификаты для доменных имён {{ sage_external_domain }}, *.internal.{{ sage_external_domain }} и {{ sage_spirit_external_domain }}, могут содержать разные сертификаты или один и тот ж е сертификат.
Смешанное использование собственных сертификатов и сертификатов, выпускаемых контейнером-установщиком — не поддерживается.
Проверка сертификатов
Для проверки валидности сертификата можно использовать утилиту openssl.
Проверка валидности сертификата
openssl x509 -in cert.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1234567890
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=Example CA
Validity
Not Before: Jan 1 00:00:00 2024 GMT
Not After : Dec 31 23:59:59 2025 GMT
Subject: CN=example.com
...
Проверка приватного ключа
Формат RSA
openssl rsa -in key.pem -check -noout
RSA key ok
Формат Elliptic Curve
openssl ec -in key.pem -check -noout
EC key ok
Формат PKCS#8
openssl pkey -in key.pem -check -noout
Key ok
Проверка срока действия сертификата
openssl x509 -in cert.pem -noout -dates
notBefore=Jan 1 00:00:00 2024 GMT
notAfter=Dec 31 23:59:59 2025 GMT
notBefore— дата начала действия сертификата;notAfter— дата окончания действия сер тификата.
openssl x509 -in cert.pem -noout -enddate
notAfter=Dec 31 23:59:59 2025 GMT
Сертификат считается невалидным, если:
- текущая дата раньше
notBefore(сертификат ещё не активен) - текущая дата позже
notAfter(сертификат истёк)
Проверка соответствия сертификата и ключа
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in key.pem | openssl md5
MD5(stdin)= a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
MD5(stdin)= a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
Хэши должны совпадать. Если значения различаются — ключ не соответствует сертификату.
Проверка цепочки сертификатов
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -noout
Команда выведет список всех сертификатов в файле с указанием полей subject и issuer, что позволит убедиться в правильности построения цепочки доверия.