Issuers

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

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

Создание Issuers

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

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

Скриншот

issuertype

  • Имя Issuer
  • Тип в спецификации объекта:
    • ACME;
    • Vault;
    • Корпоративный центр сертификации (CA);
    • Самоподписной (SelfSigned).

При необходимости добавьте Лейблы.

Настройка ACME

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

Скриншот

issueracme

  • Заполните сведения о сервере ACME. Например: https://acme-v02.api.letsencrypt.org/directory
  • Введите email, который связан с учетной записью ACME.
  • Определите, нужно ли пропускать проверку TLS.

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

Обратите внимание! Если в кластере установлен сертификат ACME, необходимо мониторить работу ACME-сервера. В случае сбоя на сервере, кластеры с сертификатами ACME будут недоступны.

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

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

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

  • Ввести имя и ключ Secret.
  • Добавить solvers: выберите тип солвера: HTTP01 или DNS01.
  1. Для HTTP01 заполните поле ClassIngress и нажмите кнопку Добавить.
Скриншот

issuersolver

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

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

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

issuersolver1

Может быть использован, если:
  • Вы используете сертификаты с подстановкой (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
  1. Для DNS01/rfc2136 заполните значение Nameserver и TsigAlgorithm. В TsigSecretSecretRef впишите имя и ключ, затем нажмите кнопку Добавить.
Скриншот

issuersolver2

Может быть использован, если у вас есть: - Сервер 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 аутентификации.
  1. Для DNS01/webhook заполните данные Cert-менеджера, подставляя в поля значение GroupName, SolverName и Config, затем нажмите кнопку Добавить.
Скриншот

issuersolver3

Пример 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>

Настройка Vault

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

Скриншот

issuervault

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:

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

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

Корпоративный центр сертификации (CA)

CA (Certificate Authority) Issuers должны быть настроены с сертификатом и закрытым ключом центра сертификации, которые хранятся в Secret. Перед добавлением CA Issuer в неймспейс, создайте Secret, содержащий сертификат и ключ.

Обратите внимание!

  • Secret и Issuer должны располагаться в одном неймспейсе.
  • В Secret наименование полей для сертификата, ключа должны быть строго: tls.crt и tls.key. По этим названиям cert-manager получит данные сертификата и ключа центра сертификации.
  • Данные в tls.crt и tls.key должны быть закодированы в base64.
Пример Secret
apiVersion: v1
kind: Secret
metadata:
  name: secretname
  namespace: namespacename
data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMrVENDQWVHZ0F3SUJBZ0lKQUtQR3dLRGwvNUhuTUEwR0NTcUdTSWIzRFFFQkN3VUFNQk14RVRBUEJnTlYKQkFNTUNHcHZjMmgyWVc1c01CNFhEVEU1TURneU1qRTJNRFUxT0ZvWERUSTVNRGd4T1RFMk1EVTFPRm93RXpFUgpNQThHQTFVRUF3d0lhbTl6YUhaaGJtd3dnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCCkFRQ3doU0IvcVc2L2tMYjJ6cHUrRUp2RDl3SEZhcStRQS8wSkgvTGxseW83ekFGeCtISHErQ09BYmsrQzhCNHQKL0hVRXNuczVSTDA5Q1orWDRqNnBiSkZkS2R1UHhYdTVaVllua3hZcFVEVTd5ZzdPU0tTWnpUbklaNzIzc01zMApSNmpZbi9Ecmo0eFhNSkVmSFVEcVllU1dsWnIzcWkxRUZhMGM3ZlZEeEgrNHh0WnROTkZPakg3YzZEL3ZXa0lnCldRVXhpd3Vzc2U2S01PV2pEbnYvNFZyamVsMlFnVVlVYkhDeWVaSG1jdGkrSzBMV0Nmby9SZzZQdWx3cmJEa2gKam1PZ1l0MzBwZGhYME9aa0F1a2xmVURIZnA4YmpiQ29JMnRhWUFCQTZBS2pLc08zNUxBRVU3OUNMMW1MVkh1WgpBQ0k1VWppamEzVlBXVkhTd21KUEp5dXhBZ01CQUFHalVEQk9NQjBHQTFVZERnUVdCQlFtbDVkVEFaaXhGS2hqCjkzd3VjUldoYW8vdFFqQWZCZ05WSFNNRUdEQVdnQlFtbDVkVEFaaXhGS2hqOTN3dWNSV2hhby90UWpBTUJnTlYKSFJNRUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCK2tsa1JOSlVLQkxYOHlZa3l1VTJSSGNCdgpHaG1tRGpKSXNPSkhac29ZWGRMbEcxcFpORmpqUGFPTDh2aDQ0Vmw5OFJoRVpCSHNMVDFLTWJwMXN1NkNxajByClVHMWtwUkJlZitJT01UNE1VN3ZSSUNpN1VPbFJMcDFXcDBGOGxhM2hQT2NSYjJ5T2ZGcVhYeVpXWGY0dDBCNDUKdEhpK1pDTkhCOUZ4alNSeWNiR1lWaytUS3B2aEphU1lOTUdKM2R4REthUDcrRHgzWGNLNnNBbklBa2h5SThhagpOVSttdzgvdG1Sa1A0SW4va1hBUitSaTBxVW1Iai92d3ZuazRLbTdaVXkxRllIOERNZVM1TmtzbisvdUhsUnhSClY3RG5uMDM5VFJtZ0tiQXFONzJnS05MbzVjWit5L1lxREFZSFlybjk4U1FUOUpEZ3RJL0svQVRwVzhkWAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
  tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBc0lVZ2Y2bHV2NUMyOXM2YnZoQ2J3L2NCeFdxdmtBUDlDUi95NVpjcU84d0JjZmh4CjZ2Z2pnRzVQZ3ZBZUxmeDFCTEo3T1VTOVBRbWZsK0krcVd5UlhTbmJqOFY3dVdWV0o1TVdLVkExTzhvT3praWsKbWMwNXlHZTl0N0RMTkVlbzJKL3c2NCtNVnpDUkh4MUE2bUhrbHBXYTk2b3RSQld0SE8zMVE4Ui91TWJXYlRUUgpUb3grM09nLzcxcENJRmtGTVlzTHJMSHVpakRsb3c1Ny8rRmE0M3Bka0lGR0ZHeHdzbm1SNW5MWXZpdEMxZ242ClAwWU9qN3BjSzJ3NUlZNWpvR0xkOUtYWVY5RG1aQUxwSlgxQXgzNmZHNDJ3cUNOcldtQUFRT2dDb3lyRHQrU3cKQkZPL1FpOVppMVI3bVFBaU9WSTRvMnQxVDFsUjBzSmlUeWNyc1FJREFRQUJBb0lCQUNFTkhET3JGdGg1a1RpUApJT3dxa2UvVVhSbUl5MHlNNHFFRndXWXBzcmUxa0FPMkFDWjl4YS96ZDZITnNlanNYMEM4NW9PbmtrTk9mUHBrClcxVS94Y3dLM1ZpRElwSnBIZ09VNzg1V2ZWRXZtU3dZdi9Fb1V3eHFHRVMvcnB5Z1drWU5WSC9XeGZGQlg3clMKc0dmeVltbXJvM09DQXEyLzNVVVFiUjcrT09md3kzSHdUdTBRdW5FSnBFbWU2RXdzdWIwZzhTTGp2cEpjSHZTbQpPQlNKSXJyL1RjcFRITjVPc1h1Vm5FTlVqV3BBUmRQT1NrRFZHbWtCbnkyaVZURElST3NGbmV1RUZ1NitXOWpqCmhlb1hNN2czbkE0NmlLenUzR0YwRWhLOFkzWjRmeE42NERkbWNBWnphaU1vMFJVaktWTFVqbVlQSEUxWWZVK3AKMkNYb3dNRUNnWUVBMTgyaU52UEkwVVlWaUh5blhKclNzd1YrcTlTRStvVi90U2ZSUUNGU2xsV0d3KzYyblRiVwpvNXpoL1RDQW9VTVNSbUFPZ0xKWU1LZUZ1SWdvTEoxN1pvWjN0U1czTlVtMmRpT0lPSHorcTQxQzM5MDRrUzM5CjkrYkFtVmtaSFA5VktLOEMraS9tek5mSkdHZEJadGIweWtTM2t3OUIxTHdnT3o3MDhFeXFSQ2tDZ1lFQTBXWlAKbzF2MThnV2tMK2FnUDFvOE13eDRPZlpTN3dKY3E0Z0xnUWhjYS9pSkttY0x0RFN4cUJHckJ4UVo0WTIyazlzdQpzTFVrNEJobGlVM29iUUJNaUdtMGtITHVBSEFRNmJvdWZBMUJwZjN2VFdHSkhSRjRMeFJsNzc2akw4UXI4VnpxClpURVBtY0R0T0hpYjdwb2I1Z2IzSDhiVGhYeUhmdGZxRW55alhFa0NnWUVBdk9DdDZZclZhTlQrWThjMmRFYk4Kd3dJOExBaUZtdjdkRjZFUjlCODJPWDRCeGR0WTJhRDFtNTNqN2NaVnpzNzFYOE1TN25FcDN1dkFqaElkbDI3KwpZbTJ1dUUyYVhIbDN5VTZ3RzBETFpUcnVIU0Z5TVI4ZithbHRTTXBDd0s1NXluSGpHVFp6dXpYaVBBbWpwRzdmCk1XbVRncE1IK3puc3UrNE9VNFBHUW9FQ2dZQWNqdUdKbS84YzlOd0JsR2lDZTJIK2JGTHhSTURteStHcm16QkcKZHNkMENqOWF3eGI3aXJ3MytjRGpoRUJMWExKcjA5YTRUdHdxbStrdElxenlRTG92V0l0QnNBcjVrRThlTVVBcAp0djBmRUZUVXJ0cXVWaldYNWlaSTNpMFBWS2ZSa1NSK2pJUmVLY3V3aWZKcVJpWkw1dU5KT0NxYzUvRHF3Yk93CnRjTHAwUUtCZ0VwdEw1SU10Sk5EQnBXbllmN0F5QVBhc0RWRE9aTEhNUGRpL2dvNitjSmdpUmtMYWt3eUpjV3IKU25QSG1TbFE0aEluNGMrNW1lbHBDWFdJaklLRCtjcTlxT2xmQmRtaWtYb2RVQ2pqWUJjNnVGQ1QrNWRkMWM4RwpiUkJQOUNtWk9GL0hOcHN0MEgxenhNd1crUHk5Q2VnR3hhZ0ZCekxzVW84N0xWR2h0VFFZCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
Скриншот Secret

secretca1

Для Issuer с типом Корпоративный центр сертификации:

Скриншот

issuerca

  • выберите Имя Secret, содержащего сертификат и ключ центра сертификации.
  • добавьте URL-адреса OCSP серверов (ocspServers) при необходимости проверки действительности (статуса) сертификата. Если не указан ни один адрес, сертификат будет выпущен без указания OCSP сервера. Пример URL-адреса сервера: http://ocsp.int-x3.example.org.
  • добавьте URL-адреса сертификатов (issuingCertificateURLs) для указания в выпускаемых сертификатах. URL-адрес должен использовать HTTP протокол, чтобы избежать проблем с проверкой домена, например, http://ca.domain.com/ca.crt.
  • при необходимости добавьте Точки распространения CRL (crlDistributionPoints): адреса со списками отозванных сертификатов (Certificate Revocation List, CRL). По указанным адресам (например, http://example.com) можно проверить статус отзыва выданных сертификатов.

Самоподписной (SelfSigned)

Самоподписной (SelfSigned) Issuers используются для установления быстрого и безопасного соединения, когда нет необходимости в подтверждении подлинности центрами сертификации.

Когда выбран тип Самоподписной для Issuer, при необходимости можно добавить Точки распространения CRL (CDP) (crlDistributionPoints). Каждая точка (url-адрес, например, http://example.com) идентифицирует местоположение списка отозванных сертификатов (Certificate Revocation List, CRL), в котором можно проверить действительность выданных сертификатов.

Скриншот

issuerselfsigned

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

Изменение Issuers

Чтобы изменить Issuer, перейдите на страницу просмотра Issuer и внесите изменения в спецификацию объекта на вкладке Issuer. Чтобы изменить лейблы, перейдите на вкладку Лейблы. Сохраните внесенные изменения.

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

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

Удалить Issuer вы можете одним из способов:

  • на странице Issuers нажмите в строке объекта;
  • на странице просмотра Issuer на вкладке Issuer нажмите кнопку Удалить;
  • на странице просмотра Issuer перейдите на вкладку Манифест и нажмите .
×