Issuers
Issuers - ресурсы Kubernetes, представляющие центры сертификации в неймспейсе, которые могут генерировать подлинные сертификаты, выполняя запросы на подпись сертификатов.
На странице Issuers можно создать, отредактировать, удалить или просмотреть ранее созданные Issuers.
Создание Issuers
Чтобы добавить Issuer нажмите на кнопку + Добавить Issuer.
В открывшемся окне необходимо заполнить:
Скриншот

- Имя Issuer
- Тип в спецификации объекта:
- ACME;
- Vault;
- Корпоративный центр сертификации (CA);
- Самоподписной (SelfSigned).
При необходимости добавьте Лейблы.
Настройка ACME
Для настройки вы должны иметь учетную запись в ACME (Automated Certificate Management Environment).
Скриншот

- Заполните сведения о сервере 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.
- Для HTTP01 заполните поле ClassIngress и нажмите кнопку Добавить.
Скриншот

Введите класс Ингресса (ClassIngress), который должен быть использован для решения Challenge от Let’s Encrypt.
Посмотреть, какие ClassIngress есть в кластере можно с помощью команды
kubectl get ingressclass -A
- Для 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 впишите имя и ключ, затем нажмите кнопку Добавить.
Скриншот

Пример
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>
Настройка 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-соединения.
Корпоративный центр сертификации (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

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

- выберите Имя 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), в котором можно проверить действительность выданных сертификатов.
Скриншот

После завершения настройки Issuer нажмите кнопку Сохранить.
Изменение Issuers
Чтобы изменить Issuer, перейдите на страницу просмотра Issuer и внесите изменения в спецификацию объекта на вкладке Issuer. Чтобы изменить лейблы, перейдите на вкладку Лейблы. Сохраните внесенные изменения.
Также Issuer можно изменить с помощью YAML манифеста. Перейдите на вкладку Манифест. После внесения изменений в манифест выполните проверку. Результат проверки будет доступен в правой части экрана. Раскройте блок результата проверки, чтобы увидеть полный манифест. Если валидация формата манифеста Issuer не пройдена, недоступна проверка манифеста.
Сохраните изменения, внесенные в манифест. Несохраненные данные не будут применены.
Удалить Issuer вы можете одним из способов:
- на странице Issuers нажмите в строке объекта;
- на странице просмотра Issuer на вкладке Issuer нажмите кнопку Удалить;
- на странице просмотра Issuer перейдите на вкладку Манифест и нажмите .