Установка 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 ~
Лог-файлы¶
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.