Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Управление цепочками сертификатов

В Nova Container Platform для управления цепочками TLS-сертификатов интегрировано решение Trust Manager.

Trust Manager - это оператор Kubernetes, предназначенный для централизованного управления и распространения цепочек доверенных сертификатов (Trust Bundles) в кластере Kubernetes. С его помощью обеспечивается унифицированное управление цепочками сертификатов, упрощается развертывание приложений, требующих доверия к определенным корневым удостоверяющим центрам (CAs), а также снижаются риски, связанные с использованием устаревших или недоверенных CA.

Цепочки Trust Manager в кластере Kubernetes - это ресурсы Bundles в API-группе trust.cert-manager.io.

1. Цепочка доверенных сертификатов по умолчанию

По умолчанию в кластере Kubernetes доступна цепочка trusted-ca-bundle, сертификаты которой сохранены в ConfigMap с таким же именем в родительском пространстве имен nova-cert-management.

Данная цепочка синхронизируется во все пространства имен, имеющие метку nova-platform.io/trusted-ca-bundle: enabled.

Источниками сертификатов для сборки всей цепочки служат ресурсы ConfigMap, имеющие метку nova-platform.io/trusted-ca-bundle-inject: enabled и ключ ca.crt, значение которого является сертификатом в формате PEM.

Несмотря на то, что в Trust Manager есть поддержка работы с секретами Kubernetes, в Nova Container Platform данная возможность отключена в целях безопасности и ограничения привилегий Trust Manager. Сертификаты CA не являются чувствительными данными и могут храниться в ConfigMap.

Пример цепочки по умолчанию

apiVersion: trust.cert-manager.io/v1alpha1
kind: Bundle
metadata:
  name: trusted-ca-bundle
spec:
  sources:
    - useDefaultCAs: true
    - configMap:
        key: ca.crt
        selector:
          matchLabels:
            nova-platform.io/trusted-ca-bundle-inject: enabled
  target:
    configMap:
      key: ca-certificates.pem
    namespaceSelector:
      matchLabels:
        nova-platform.io/trusted-ca-bundle: enabled

Обратите внимание, что цепочка trusted-ca-bundle также включает публичные сертификаты (опция useDefaultCAs: true). Это означает, что используя цепочку по умолчанию, ваши сервисы будут доверять не только персональным сертификатам, но так же и всем публично доступным, включая сертификаты российский удостоверяющих центров.

2. Использование цепочек в пользовательских приложениях

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

  • Создать необходимые ресурсы ConfigMap с необходимыми сертификатами CA. Используйте один ресурс ConfigMap для одного сертификата CA. Установите метку на ресурс, по которой его можно будет найти оператору Trust Manager.

  • Подготовьте необходимые пространства имен, в которые потребуется распространить цепочку сертификатов. Установите для этого соответствующую метку.

  • Создать новый ресурс Bundle, где укажите параметры организации цепочки сертификатов. Вы можете указать несколько селекторов для поиска ресурсов ConfigMap с сертификатами.

  • (Опционально) Включите в цепочку публичные сертификаты.

После того, как цепочка станет доступна в кластере Kubernetes, вы можете использовать ее в своих приложениях. Для этого вам необходимо будет смонтировать ConfigMap с цепочкой в Pod. В зависимости от ОС, которая лежит в основе контейнера, точка монтирования единого файла с сертификатами CA может отличаться:

  • Для Debian-based ОС (Debian, Ubuntu), а также ОС Alpine, цепочку необходимо монтировать в файл /etc/ssl/certs/ca-certificates.crt.

  • Для RHEL-based ОС (RHEL, CoreOS, Fedora, CentOS, Rocky Linux) цепочку необходимо монтировать в файл /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem.

При добавлении собственных сертификатов в цепочку по умолчанию trusted-ca-bundle некоторые из служебных сервисов Nova Container Platform будут автоматически перезапущены.