Установка Crypto API

Для установки Crypto API в Docker нужно:

  • задать параметры контейнера;

  • выполнить скрипт, который создаст контейнер на основе образа;

  • запустить контейнер;

  • настроить доступ к Crypto API через Nginx.

Задание параметров контейнера

Для того чтобы задать параметры контейнера, нужно открыть конфигурационный файл ContainerConfiguration.json в текстовом редакторе:

nano ~/Загрузки/TerraLink.xDEPro/Cryptography.REST/ContainerConfiguration.json

Параметры контейнера приведены ниже:

{
    "CryptoProLicense": "string",           // серийный номер лицензии для КриптоПро CSP
    "CryptoProTspLicense": "string",        // серийный номер лицензии для КриптоПро TSP-клиент
    "CryptoProOcspLicense": "string",       // серийный номер лицензии для КриптоПро OCSP-клиент
    "Certificates": [                       // имена файлов сертификатов, для которых есть закрытый ключ (pfx), и их пароли
        {
            "FileName": "string",           // имя pfx-файла без пути
            "Password": "string"            // пароль к pfx-файлу
        }
    ],
    "CertificatesFolderPath": "string",     // путь к папке с сертификатами, для которых есть закрытый ключ (pfx)
    "RootCertificatesFolderPath": "string", // путь к папке с корневыми сертификатами (cer)
    "Appsettings": {                        // содержимое файла конфигурации appsettings.json
        // ...
    }
}

Лицензии КриптоПро

Для работы с криптографией Crypto API Продукта по умолчанию использует 64-разрядную версию КриптоПро CSP.

В поле CryptoProLicense задается серийный номер лицензии для КриптоПро CSP.

В поле CryptoProTspLicense задается серийный номер лицензии для КриптоПро TSP-клиент. Его нужно указывать, если предполагается формировать подписи типа CAdES-T или CAdES-X Long Type 1.

В поле CryptoProOcspLicense задается серийный номер лицензии для КриптоПро OCSP-клиент. Его нужно указывать, если предполагается формировать подписи типа CAdES-X Long Type 1.

Сертификаты

В поле CertificatesFolderPath задается путь к папке с сертификатами, для которых есть закрытый ключ (pfx).

В поле Certificates перечисляются пароли к pfx-файлам, которые будут найдены в папке CertificatesFolderPath. Имя pfx-файла задается в поле FileName, путь к файлу не указывается. Пароль к pfx-файлу задается в поле Password.

В поле RootCertificatesFolderPath задается путь к папке с корневыми сертификатами (cer). Это сертификаты удостоверяющих центров. Они содержат только открытый ключ.

Конфигурационный файл Crypto API

В поле Appsettings передается содержимое конфигурационного файла Crypto API. Здесь нужно настроить подключение Crypto API к базе данных.

Для этого следует найти поле ConnectionString и задать имя пользователя и пароль назначенной учетной записи:

{
    "ProviderName": "Npgsql",
    "ConnectionString": "User ID=xde;Password=1234aA;Host=192.168.11.128;Port=5432;Database=DOCFLOW_DB;MaxPoolSize=500"
}

Примечание

В примере установки используется PostgreSQL, установленный локально. Контейнер по умолчанию не может обращаться к Docker-хосту, используя имя localhost или IP-адрес 127.0.0.1. Здесь используется пример внешнего IP-адреса Docker-хоста.

Затем нужно сохранить файл ContainerConfiguration.json (Ctrl+O) и выйти из редактора (Ctrl+X).

Примечание

Crypto API использует базу данных интеграционного модуля. Если планируется использовать PostgreSQL, установленный на другой машине, то в строке подключения нужно указать имя хоста (либо IP-адрес) и порт установленного экземпляра PostgreSQL.

Создание и запуск контейнера

Для создания контейнера нужно перейти в папку с образом:

cd ~/Загрузки/TerraLink.xDEPro/Cryptography.REST

и с помощью Powershell Core выполнить скрипт CreateDockerContainer.ps1:

rootlessenv pwsh ./CreateDockerContainer.ps1

В результате будет создан контейнер с именем xde-cryptography-rest-container.

В терминал также будет выведен идентификатор контейнера. Он понадобится для запуска.

Примечание

Определить идентификатор контейнера можно, выполнив команду:

rootlessenv docker container ls -a

Команда выведет в терминал список контейнеров с их именами и идентификаторами.

Теперь следует запустить контейнер:

rootlessenv docker container start container_id

где container_id - идентификатор созданного контейнера, полученный на предыдущем шаге.

Далее нужно вернуться в домашнюю папку:

cd ~

Лог-файлы

Вместе с контейнером в Docker создается том для хранения лог-файлов.
Имя тома: xde-cryptography-rest-logs.

Для получения пути к тому в файловой системе Docker-хоста нужно выполнить команду:

rootlessenv docker volume inspect xde-cryptography-rest-logs

Поле Mountpoint будет указывать на путь к папке с лог-файлами в файловой системе Docker-хоста.

Примечание

Содержимое тома доступно только с правами суперпользователя.

Настройка доступа к Crypto API через Nginx

Для настройки доступа к Crypto API через Nginx требуется создать файл с конфигурацией сайта в текстовом редакторе:

sudo nano /etc/nginx/sites-available/xde-crypto-api

и скопировать в него содержимое:

server {
        # виртуальный сервер настраивается на порт по умолчанию для этого HTTP-сервиса + 100
        listen        6103;

        # в примере доступ к этому HTTP-сервису возможен только по IP-адресу
        server_name   192.168.11.128;
        location / {
                # порт по умолчанию для этого HTTP-сервиса - 6003
                proxy_pass         http://127.0.0.1:6003;
                proxy_http_version 1.1;
                proxy_set_header   Upgrade $http_upgrade;
                proxy_set_header   Connection keep-alive;
                proxy_set_header   Host $host:$server_port;
                proxy_cache_bypass $http_upgrade;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   X-Forwarded-Proto $scheme;
        }
}

Затем нужно сохранить файл (Ctrl+O) и выйти из редактора (Ctrl+X).

Примечание

Для доступа по IP-адресу значение параметра server_name должно быть равно фактическому IP-адресу машины, на которую устанавливается Crypto API. Здесь указан пример IP-адреса.

Теперь нужно создать ссылку на конфигурационный файл сайта в папке /etc/nginx/sites-enabled/ и перезапустить Nginx:

sudo ln -s /etc/nginx/sites-available/xde-crypto-api /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Предупреждение

Не используйте HTTP-подключение к Nginx в продуктивной среде. Это может привести к несанкционированному доступу к данным, в том числе к содержимому документов и паролям. Используйте HTTPS-подключение.

Проверка доступности Crypto API

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

http://192.168.11.128:6103

В ответ в браузере должна открыться страница Swagger UI.