﻿# Подготовка secret с сертификатом для работы по HTTPS

> [HTML Version](preparation-secret-with-certificate-https.html)

Для работы по протоколу HTTPS создайте secret с сертификатом. Настройка состоит из следующих этапов:

1. [Подготовить сертификат](#cert).

2. [Создать secret с сертификатом](#secret).

3. [Настроить поддержку доверия](#configmap) на стороне приложения ELMA365, если это требуется для используемого сертификата или набора сертификатов CA.

## Шаг 1. Подготовить сертификат

Доступные способы выпуска сертификата зависят от контура установки:

- при работе с доступом в интернет вы можете:

	- приобрести сертификат, выпущенный одним из доверенных удостоверяющих центров, или использовать уже имеющийся;

	- [создать сертификат Let’s Encrypt](certificate-lets-encrypt.md);

- при работе в закрытом контуре без доступа в интернет вы можете:

	- использовать уже имеющийся сертификат, выпущенный локальным удостоверяющим центром;

	- [создать самоподписанный сертификат с помощью OpenSSL](ssl-certificates.md);

	- [создать самоподписанный сертификат с помощью Cert-manager](ssl-certificates-with-cert-manager.md).

## Шаг 2. Создать secret с сертификатом

Добавьте сертификат в Kubernetes. Для этого в namespace с целевым приложением создайте secret типа **tls** с наименованием **elma365-onpremise-tls**, выполнив команду:

````
kubectl create secret tls elma365-onpremise-tls \\  
\--cert=path/to/cert/file \\  
\--key=path/to/key/file \[-n namespace\]

````
где:

- `--cert` — путь к файлу с открытым сертификатом формата **.pem** или **.crt**;

- `--key` — путь к файлу с закрытым ключом.

````
начало примечание

````
**Примечание**

Создайте secret с сертификатом в том же namespace, в котором работает или будет установлено целевое приложение, для которого выпускается сертификат:

- для приложения ELMA365 стандартный namespace — `elma365`;

- для [встроенных баз данных](embedded-databases-settings.md) стандартный namespace — `elma365-dbs`.

````
конец примечание

## ````
Шаг 3. Настроить поддержку доверия корневому сертификату CA

Этот шаг выполняется в следующих случаях:

- сертификат выпущен локальным удостоверяющим центром;

- используется самоподписанный сертификат;

- используется несколько сертификатов CA, для которых требуется настроить поддержку доверия.

### Способ 1. Настроить поддержку доверия с помощью helm-чарта ELMA365

Используйте этот способ, если поддержка доверия требуется только для приложения ELMA365.

При настройке доверия одновременно к нескольким корневым или промежуточным удостоверяющим центрам — например, к локальному УЦ компании и сертификатам Минцифры России — сначала объедините сертификаты в один файл. 

Чтобы настроить поддержку доверия с помощью helm-чарта ELMA365, выполните следующие действия:

1. Если используется несколько сертификатов CA, объедините их в один файл:

````
awk 1 local-ca.crt russian\_trusted\_root\_ca.crt russian\_trusted\_sub\_ca.crt > path/to/rootCA

2. ````
В namespace, в котором установлено приложение ELMA365, создайте ConfigMap из файла сертификата CA или объединённого файла сертификатов CA:

````
kubectl create configmap elma365-onpremise-ca \\  
\--from-file=elma365-onpremise-ca.pem=path/to/rootCA \[-n namespace\]

3. ````
Откройте конфигурационный файл `values-elma365.yaml`, заполненный при установке ELMA365.

````
Начало внимание

````
Перед редактированием файла `values-elma365.yaml` создайте его резервную копию, поскольку некорректная настройка параметров может привести к сбоям в работе приложения ELMA365.

````
Конец внимание````
 



В конфигурационном файле `values-elma365.yaml` заполните параметры:

- `global.ingress.onpremiseTls.enabledCA` — использование пользовательского сертификата корневого CA приложением ELMA365. Для включения параметра укажите `true`;

- `global.ingress.onpremiseTls.configCA` — наименование ранее созданного ConfigMap. В рамках статьи используется наименование **elma365-onpremise-ca**.

Пример файла:

````
global:  
 ...  
 ingress:  
   # Включение host в ingress (значение берётся из host)  
   # Если s3 minio устанавливался через чарты elma365-dbs, в файле values-dbs.yaml   
  # в блоке minio укажите значение в параметре hosts  
   hostEnabled: false  
   onpremiseTls:  
     # включение HTTPS  
     enabled: true  
     # имя секрета с сертификатами для работы HTTPS  
     secret: "elma365-onpremise-tls"  
     # включение сертификата корневого CA для работы HTTPS с самоподписанным сертификатом  
     enabledCA: true  
     # имя ConfigMap с сертификатом корневого CA для работы HTTPS с самоподписанным сертификатом  
     configCA: "elma365-onpremise-ca"

4. ````
Примените заданные параметры. Подробнее читайте в статье [«Включение Network Encryption (TLS) в ELMA365 Enterprise»](enable-tls-enterprise.md).

### Способ 2. Настроить поддержку доверия с помощью Kyverno

Используйте этот способ, если поддержка доверия требуется одновременно для приложения ELMA365 и встроенных баз данных. Kyverno позволяет автоматически добавлять том, содержащий пользовательские сертификаты CA, в контейнеры с определённой меткой. Подробнее читайте в разделе [«Установка Kyverno»](install-kyverno.md).