Issuers

Issuers - ресурсы Kubernetes, представляющие центры сертификации в неймспейсе, которые могут генерировать подлинные сертификаты, выполняя запросы на подпись сертификатов.

На странице Issuers можно создать, отредактировать, удалить или просмотреть ранее созданные Issuers.

Чтобы добавить Issuer нажмите на кнопку + Добавить Issuer.

Скриншот

issuer

В открывшемся окне необходимо заполнить:

  • Название Issuer
  • Спецификацию объекта. Из выпадающего списка выберите тип. На текущий момент доступен ACME и Vault.

Issuer можно изменить с помощью YAML манифеста. Перейдите на вкладку Манифест. После внесения изменений в манифест выполните проверку. Результат проверки будет доступен в правой части экрана. Раскройте блок результата проверки, чтобы увидеть полный манифест. Если валидация формата манифеста Issuer не пройдена, недоступна проверка манифеста.

Сохраните изменения, внесенные в манифест. Несохраненные данные не будут применены.

Настройка ACME

Для настройки вы должны иметь учетную запись в ACME (Automated Certificate Management Environment).

Заполните сведения о сервере ACME. Например: https://acme-v02.api.letsencrypt.org/directory

Введите email, который связан с учетной записью ACME. Определите, нужно ли пропускать проверку TLS.

Если пропустить проверку TLS, то запросы к серверу ACME не будут подтверждены сертификатом TLS.(т.е. будут разрешены небезопасные соединения). Включайте этот параметр только в средах разработки.

При установлении защищенного TLS-соединения вы можете указать в поле CA Bundle пакет сертификатов центра сертификации. CA Bundle содержит корневой сертификат и промежуточный в формате PEM для проверки подлинности и доверия сертификатам сервера ACME. Обратите внимание! Данные файла CA Bundle должны содержать ----BEGIN CERTIFICATE---- и ----END CERTIFICATE----.

Если CABundle не указан, но проверка TLS-соединения устанавливается, то для проверки соединения используется пакет системных сертификатов внутри контейнера.

В части Ключ учетной записи ACME необходимо ввести имя и ключ Secret.

Обозначьте solvers: выберите тип солвера: HTTP01 или DNS01.

  • Для HTTP01 заполните поле ClassIngress и нажмите кнопку Добавить.

Может быть использован, если:

  • Ваш провайдер не блокирует порт 80;
  • Ингресс контроллер доступен из интернета по 80 порту;
  • Вы не используете сертификаты с подстановкой (wildcard-сертификаты).

Введите класс Ингресса (ClassIngress), который должен быть использован для решения Challenge от Let’s Encrypt.

Посмотреть, какие ClassIngress есть в кластере можно с помощью команды
kubectl get ingressclass -A
Если не указать ClassIngress, будет использован дефолтный класс.
  • Для DNS01/acmeDNS заполните значение хоста. В AccountSecretRef впишите имя и ключ, затем нажмите кнопку Добавить.

Может быть использован, если:

  • Вы используете сертификаты с подстановкой (wildcard-сертификаты);
  • Есть несколько web-серверов.
Пример Issuer
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: example-issuer
spec:
  acme:
    solvers:
    - dns01:
        acmeDNS:
          host: https://acme.example.com
          accountSecretRef:
            name: acme-dns
            key: acmedns.json
  • Для DNS01/rfc2136 заполните значение Nameserver и TsigAlgorithm. В TsigSecretSecretRef впишите имя и ключ, затем нажмите кнопку Добавить. Может быть использован, если у вас есть:
  • Сервер DNS, настроенный с поддержкой протокола RFC2136;
  • Доступ к данным (ключи TSIG) для авторизации обновлений DNS.
Пример
rfc2136:
         nameserver: 1.2.3.4:53
         tsigKeyName: example-com-secret
         tsigAlgorithm: HMACSHA512
         tsigSecretSecretRef:
           name: tsig-secret
           key: tsig-secret-key
  • tsigKeyName - имя ключа вашей TSIG аутентификации (например, example-key).
  • tsigAlgorithm - алгоритм, используемый для создания ключа TSIG (например, hmac-md5).
  • tsigSecretSecretRef.name - секрет, содержащий секретный ключ для TSIG аутентификации.
  • Для DNS01/webhook заполните данные Cert-менеджера, подставляя в поля значение GroupName, SolverName и Config, затем нажмите кнопку Добавить.
Пример Issuer
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: example-issuer
spec:
  acme:
   ...
    solvers:
    - dns01:
        webhook:
          groupName: $WEBHOOK_GROUP_NAME
          solverName: $WEBHOOK_SOLVER_NAME
          config:
            ...
            <webhook-specific-configuration>

Подробнее о настройке TLS.

Настройка Vault

Для настройки вы должны иметь учетную запись в vault. Согласно официальной документации Cert Manager рекомендуемый способ интеграции для текущей версии - ServiceAccountRef. Поэтому для интеграции выберите ServiceAccount из выпадающего списка. ServiceAccount должен быть создан в этом же неймспейсе и иметь в этом неймспейсе роль vault-issuer, соответствующую правам:

Rules
rules:
  - apiGroups: ['']
    resources: ['serviceaccounts/token']
    resourceNames: ['vault-issuer']
    verbs: ['create']

На текущий момент создание roles и clusterroles недоступно из интерфейса платформы. Для создания роли необходимо скачать kubeconfig кластера, обратиться к кластеру через командную строку и загрузить манифест с соответствующей ролью. Созданные роли отобразятся в списке доступных ролей при создании ServiceAccount.

После выбора ServiceAccount в поле mountPath заполните путь монтирования Vault для использования при аутентификации в Vault. Пример: /v1/auth/kubernetes.

В поле Роль пропишите роль пользователя на стороне Vault, например: my-app-1.

В поле Path пропишите путь к монтируемому пути конечной точки подписи PKI-backend Vault, например: my_pki_mount/sign/my-role-name.

В поле Сервер пропишите адрес подключения к серверу Vault, например: https://vault.local.

С целью проверки подлинности и доверия сертификатам сервера Vault, вы можете указать CA Bundle, содержащий корневой и промежуточный сертификаты в формате PEM. Доступно два способа включения CA Bundle в Issuers:

  • Выберите Файл в блоке CA Bundle, чтобы ввести данные файла CA Bundle. Обратите внимание! Данные файла CA Bundle должны содержать ----BEGIN CERTIFICATE---- и ----END CERTIFICATE----.
  • Выберите Ключ к CA Bundle в блоке CA Bundle, чтобы загрузить CA Bundle с указанием ссылки на Secret в вашем кластере. Выберите Secret, который содержит CA Bundle, и укажите ключ доступа к нему.

Если CABundle не указан в Issuer, пакет сертификатов cert-manager используется для проверки TLS- соединения.

После завершения настройки Issuer нажмите кнопку Сохранить.

Чтобы удалить элемент, нажмите в строке элемента.

×