# Выпуск корневого сертификата

**Самоподписанный сертификат** – сертификат, изданный самим пользователем, без обращения к доверенной стороне Удостоверяющему центру. Самоподписанный сертификат является одновременно личным и корневым (устанавливается в Личное хранилище сертификатов и «Доверенные корневые центры сертификации»).

Самоподписанные сертификаты используются для обмена зашифрованными или подписанными документами между людьми, доверяющими друг другу, например, друзьями, коллегами. Обменявшись такими сертификатами между собой, они могут пересылать друг другу подписанные и зашифрованные электронные данные, не беспокоясь при этом, что информация может быть перехвачена, искажена и использована против их интересов.

!!! note
    Важно помнить, что использование самоподписанных сертификатов не позволяет решать конфликтные ситуации, возникающие при обмене конфиденциальными данными, с помощью суда.
## Техническая реализация

1. На сервер приложения устанавливается компоненты КриптоПро CSP в единственном количестве.

2. С помощью утилиты Крипто АРМ, входящую в КриптоПро CSP, выпускается столько корневых сертификатов, сколько организаций будут работать в данном приложении.

3. В качестве корневого необходимо выпустить и использовать самоподписанный сертификат. Для этого при выпуске в назначении ключа во вкладке «Дополнительно» нужно указать «Подпись сертификатов».

## Создание сертификата

Запустите программу КриптоАРМ.

![КриптоАРМ](media/CryptoARM.png)

В дереве элементов главного окна выберите раздел **Сертификаты**. Вызовите правой клавишей мыши контекстное меню и выберите пункт **Создать > Самоподписанный сертификат.**

![Создание сертификаты](media/sozdanie.png)

Откроется Мастер создания самоподписанного сертификата.

На первом шаге ознакомьтесь с порядком и требованиями создания самоподписанного сертификата. Нажмите Далее.
На следующем шаге из выпадающего списка выберите шаблон сертификата:

![Шаблон по умолчанию](media/shablon.png)

!!! note
    **Шаблон по умолчанию**

    При создании запроса на сертификат по «шаблону по умолчанию» необходимо ввести базовую информацию о владельце: Идентификатор, Организация, Город, Область, Страна, E-Mail и ИНН;

    **Шаблон с расширенным списком полей**
    
    При создании запроса на сертификат по «шаблону с расширенным списком полей» дополнительно к базовой информации добавляется следующая: Должность, Подразделение, Регион, Населенный пункт, Адрес

Укажите идентификационную информацию о владельце будущего сертификата, в зависимости от того, какой шаблон вы выбрали на предыдущем шаге.

![Данные](media/info.png)

!!! note
    Поля отмеченные знаком «*» являются обязательными для заполнения.
    
    Обратите внимание, если вы указываете ИНН юридического лица, номер всегда должен начинаться с «00», например 007707049388. 
    
    СНИЛС указывается без пробелов и знаков «-», например, 07306654534.

В открывшемся окне **Параметры ключа** в выпадающем списке выберите укажите следующие настройки:

* Используемый криптопровайдер, например:

![Криптопровайдер](media/criptoprovaider.png)

Выберите вариант создания ключевого набора:

* Создать ключевой набор - сертификат будет создан на основе нового ключевого набора.
  
* Использовать существующий ключевой набор – выберите ключевой набор, который будет использован при создании сертификата, из списка существующих (кнопка Выбрать).

![Ключевой набор](media/cluchevoi.png)

* Установите переключатель напротив необходимого **Назначения ключа сертификата**, например:

![Назначение](media/naznachenie.png)

* Вы также можете выбрать дополнительное назначение ключа, нажав на кнопку **Дополнительно**. В списке назначений использования ключа выберите необходимое:

![Дополнительно](media/dopolnitelno.png)

В разделе **Срок действия сертификата** автоматически проставляется дата, с которой сертификат действителен (текущее системное время) и дата, по которую сертификат действителен (1 год вперед от текущего времени). Эти даты вы можете отредактировать.

![Срок действия сертификата](media/srok.png)

После всех сделанных изменений нажмите "Ок".

* Укажите необходимую Длину ключа. Например, 2096

![Длина](media/dlina.png)

* **Пометить ключи как экспортируемые.** Если вы отметите этот флаг, то сможете проводить экспорт сертификата вместе с закрытыми ключами.

На основе указанных данных будет сформирован самоподписанный сертификат открытого ключа. После завершения операции возникнет окно с информацией о ее результатах. Нажмите Готово.

![Сформированный запрос](media/sformirovanie.png)

В открывшемся окне выберите носитель для создания контейнера с ЭП и нажмите Ок:

![Носитель](media/nositel.png)

Далее необходимо перемещать указатель мыши либо нажимать различные клавиши для генерации случайной последовательности:

![Генерация](media/bio.png)

В окне аутентификации задайте пароль для контейнера и нажмите Ок:

![Пароль](media/parol.png)

На запрос системы установить ли самоподписанный сертификат в хранилище Доверенных корневых центров сертификации, нажмите на кнопку Да.

![Запрос](media/zapros.png)

В дереве элементов главного окна в разделе **Сертификаты** выберите **"Личное хранилище сертификатов"**. В данном разделе будет отображен только что созданный самоподписанный сертификат.

![Сертификат](media/sertificate.png)

## Организация корневого сертификата на проекте

На проекте для электронной цифровой подписи используется система корневых сертификатов. Для выпуска необходимо выполнить следующее:

1) Выпустить корневые сертификаты в формате **pfx** по примеру описанном [выше](#создание_сертификата) . Их должен выпустить ответственный исполнить со стороны Заказчика.

!!! note
    На каждый филиал выпускается отдельный корневой сертификат
   
2) Далее ответственный исполнить со стороны Заказчика должен передать данные по сертификату в техническую поддержку вместе с паролями  и отпечатками подписей;
   
3) Все корневые сертификаты необходимо поместить в архив с названием `certificates.tar` без подпапок;
   
4) Данный архив переместить в папку `dss` в репозиторий с деплоем проекта;

5) В файле `import-cert.sh` прописать импорт и установку сертификата. Пример файла `import-cert.sh` выглядит следующим образом:

```
# Установка лицензии криптопро
/opt/cprocsp/sbin/amd64/cpconfig -license -set <ENTRY_LICENSE>
/opt/cprocsp/sbin/amd64/cpconfig -license -view

# Пример установки сертификата для интеграции с Контур
/opt/cprocsp/bin/amd64/certmgr -install -pfx -file /root/certificates/tls.pfx  -pin <ENTRY_YOU_PIN> -silent

# Пример установки корневого сертификата, который используется в ОЭЦП от Лексемы
/opt/cprocsp/bin/amd64/certmgr -install -pfx -store mRoot -file /root/certificates/root.pfx  -pin <ENTRY_YOU_PIN> -silent
```
   
6) Далее необходимо произвести сборку проекта;

7) После сборки перейти в форму "Управление компаниями" и в поле "Отпечаток" прописать отпечаток сертификата от соответствующей компании;

![Отпечаток](media/cert.png)

!!! note
    Данный пункт необходимо проделать на каждом филиале организации

!!! warning

    Максимальный срок корневого сертификата может составлять 1 год и 3 месяца, после чего необходимо выпустить новый корневой сертификат. Также корневой сертификат необходимо перевыпустить в случае ошибки **0x80090010** во время выпуска сертификата УНЭП.