﻿# Создание самоподписанных сертификатов TLS с помощью Cert-manager

> [HTML Version](ssl-certificates-with-cert-manager.html)

Cамоподписанный сертификат используется для динамических тестовых окружений или при использовании внешнего балансировщика, терминирующего TLS‑трафик.

````
начало внимание

````
Самоподписанный сертификат TLS не обеспечивает надёжную защиту данных от злоумышленников. Рекомендуется использовать коммерческие TLS‑сертификаты от доверенных центров сертификации, таких как Comodo, Symantec, Thawte и т. д.

````
конец внимание

````
Чтобы создать сертификат с атрибутом SAN, выполните следующие действия:

1. Установите компонент дополнений [Cert-manager](install-cert-manager.md);

2. Создайте yaml-файл **selfsigned-cluster-issuer.yaml**:

````
nano selfsigned-cluster-issuer.yaml

````
Для инициирования процедуры заказа сертификата в кластере kubernetes должны быть объявлены ресурсы центров сертификации (CA), которые используются для подписи CSR (запросов на выпуск сертификата). В зависимости от требуемой области видимости вы можете объявить нужный ресурс:

- **Issuer** — может использоваться в рамках одного пространства имён;

- **ClusterIssuer** — является глобальным объектом кластера.

3. Вставьте в файл **selfsigned-cluster-issuer.yaml** следующие значения:

````
apiVersion: cert-manager.io/v1  
kind: ClusterIssuer  
metadata:  
  name: elma365-selfsigned-certificate  
spec:  
  selfSigned: \{\}

4. ````
Примените файл **selfsigned-cluster-issuer.yaml** к кластеру:

````
kubectl apply -f selfsigned-cluster-issuer.yaml

5. ````
Создайте yaml-файл сертификата **create-selfsigned-elma365-certificate.yaml**:

````
nano create-selfsigned-elma365-certificate.yaml

6. ````
Внесите изменения в файл **create-selfsigned-elma365-certificate.yaml**:

````
apiVersion: cert-manager.io/v1  
kind: Certificate  
metadata:  
  name: elma365-selfsigned-tls-certificate  
  namespace: \[namespace\]  
spec:  
  secretName: elma365-onpremise-tls  
  secretTemplate:  
    annotations:  
      reflector.v1.k8s.emberstack.com/reflection-allowed: "true"  
      reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "kube-system"  
      reflector.v1.k8s.emberstack.com/reflection-auto-enabled: "true"  
      reflector.v1.k8s.emberstack.com/reflection-auto-namespaces: "kube-system"  
  duration: 8760h  
  renewBefore: 720h  
  isCA: false  
  subject:  
    organizations:  
    - "YOUR\_NAME\_ORGANIZATIONS"  
  privateKey:  
    algorithm: ECDSA  
    size: 384  
    encoding: PKCS8  
    rotationPolicy: Always  
  issuerRef:  
    kind: ClusterIssuer  
    name: elma365-selfsigned-certificate  
  commonName: "elma365\_server.your\_domain"  
  dnsNames:  
  - "elma365\_server.your\_domain"

````
где:

- \[OBJECT\] — наименование нужного namespace, в котором должен быть размещён сертификат;

````
начало примечание

````
**Примечание**

Создайте Secret с сертификатом в том же namespace, в котором работает или будет установлено целевое приложение, для которого выпускается сертификат.

Для приложения [ELMA365](installing-elma365-enterprise.md) стандартный namespace: \[OBJECT\]. 

Для [встроенных баз данных](embedded-databases-settings.md) стандартный namespace: \[OBJECT\].

````
конец примечание

- ````
\[OBJECT\] — срок действия сертификата в часах;

- \[OBJECT\]** **— наименование вашей организации (замените \[OBJECT\]);

- \[OBJECT\] и \[OBJECT\] — наименование домена (FQDN), для которого должен быть выпущен сертификат (замените \[OBJECT\]).

7. Примените файл **create-selfsigned-elma365-certificate.yaml** к кластеру:

````
kubectl apply -f create-selfsigned-elma365-certificate.yaml

8. ````
Для установки или обновления приложения [ELMA365](installing-elma365-enterprise.md) или [встроенных баз данных](embedded-databases-settings.md) воспользуйтесь secret \[OBJECT\] (наименование, указанное в параметре \[OBJECT\]).