Пример развертывания КриптоПро SVS в *nix-системах
В данном разделе приведен пример развертывания КриптоПро SVS в *nix-системах. Пример позволяет установить и настроить минимально необходимые для обеспечения работоспособности компоненты. Полная информация о настройке и возможностях КриптоПро SVS приведена в разделе "Настройка КриптоПро SVS".
Используемые архивы и пакеты находятся на дистрибутивном диске КриптоПро SVS.
КриптоПро SVS будет установлен в директорию /opt/cprosvs/vssrv
.
Примечание
Команды bash, приведенные ниже, подразумевают выполнение из папки, куда было скопировано содержимое дистрибутивного диска с КриптоПро SVS и дополнительным ПО (например /var/temp).
#Установка КриптоПро CSP:
#Распаковка архива
sudo tar -xvf linux-amd64_deb.tgz
#Установка
#Внимание! Требуется лицензия на КриптоПро CSP для TLS-сервера
#Дополнительная информация содержится в эксплуатационной документации на КриптоПро CSP
sudo chmod u+x linux-amd64_deb/install.sh
sudo linux-amd64_deb/install.sh
#Дополнительный пакет для поддержки ГОСТ в nginx
sudo dpkg -i linux-amd64_deb/lsb-cprocsp-devel_5.0.12001-6_all.deb
#Установка CAdES:
#Распаковка архива
sudo mkdir cades-linux-amd64
sudo tar -xvf cades-linux-amd64.tar.gz -C cades-linux-amd64
#Установка
#Дополнительная информация содержится в эксплуатационной документации
sudo dpkg -i cades-linux-amd64/cprocsp-pki-cades-64_2.0.14606-1_amd64.deb
#Установка NGINX (офлайн-версия КриптоПро):
# Создать пользователя nginx
sudo adduser --system --no-create-home --group nginx
# Установка nginx c дистрибутивного диска
sudo dpkg -i nginx_1.18.0~astra-gost_amd64_signed.deb
# Установка nginx с нуля (если не был собран на дистрибутивном диске)
# Распаковка архива nginx.tar.gz
# sudo tar -xvf nginx.tar.gz
#Выполнить gost_nginx.sh
#sudo chmod u+x nginx/gost_nginx.sh
#sudo nginx/gost_nginx.sh
#Выполнить перезагрузку nginx:
#sudo service nginx restart
#Установка сертификата веб-сервера
$ sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -install -file <certificate.pfx> -pfx -pin <pfx_pin> -store umy
# где <certificate.pfx> - имя PFX-файла с сертификатом,
# <pfx_pin> – пароль от PFX-файла.
# Установка корневого сертификата для сертификата веб-сервера
sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -install -file <root.cer> -store uroot
# Установка промежуточного сертификата для сертификата веб-сервера
sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -install -file <ca.cer> -store uca
# Получение серийного номера сертификата веб-сервера
$ sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -list -store umy
# В конфигурационный файл Nginx(/etc/nginx/nginx.conf), в контекст server, отвечающий за взаимодействие
# по https, необходимо добавить серийный номер сертификата веб-сервера и ввести его в поле
# sspi_certificate:
sudo nano /etc/nginx/nginx.conf
Пример:
sspi on;
sspi_certificate 0x12005F5F61797E3D56DBE2B60B0001005F5F61; # server certificate serial
sspi_protocols TLSv1 TLSv1.1 TLSv1.2;
sspi_verify_client on;
sspi_client_certificate root; # Which store to search the root certificate in
Перезапуск nginx
$ sudo systemctl restart nginx
#Установка Powershell:
sudo dpkg -i powershell_7.2.4-1.deb_amd64.deb
#Альтернативный вариант (при необходимости изменить версию входящего в дистрибутивный комплект PowerShell)
#Установка пакета curl:
sudo apt install curl
#Импорт ключей GPG публичного репозитория Microsoft:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
#Подключение репозитория Microsoft:
echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" | sudo tee /etc/apt/sources.list.d/microsoft.list
#Обновление списка пакетов:
sudo apt update
#Установка пакетов PowerShell
sudo apt install powershell
#Установка КриптоПро SVS:
sudo dpkg -i cprosvs-base_1.0.318-prerelease-1_amd64.deb
sudo dpkg -i cprosvs-fe_1.0.318-prerelease-1_amd64.deb
#Создание учетной записи, под которой будет запускаться Служба
sudo adduser --quiet --system --no-create-home <accountName>
sudo usermod -a -G vssrv <accountName>
Настройка КриптоПро SVS:
sudo pwsh
#Импорт PowerShell-модулей
#Модуль Сервиса Проверки Подписи
Import-Module /opt/cprosvs/powershell/Modules/CryptoPro.VerificationService.PowerShell/CryptoPro.VerificationService.PowerShell.psd1
#Модуль веб-интерфейса Сервиса Проверки Подписи
Import-Module /opt/cprosvs/powershell/Modules/CryptoPro.VerificationService.Frontend.PowerShell/CryptoPro.VerificationService.Frontend.PowerShell.psd1
#Создание экземпляра SVS
Add-VsInstance -ApplicationName %instanceName% -ListenPort %port% -DisplayName %instanceName% -ServiceAccountName %accountName%
#Пример:
#Add-VsInstance -ApplicationName vs -ListenPort 8080 -DisplayName vs -ServiceAccountName user1
#Ввод временной лицензии на SVS
New-VsLicense
# Добавление плагинов преобразования документов
Add-VsConverterPlugin -FileExtension pdf -Assembly CryptoPro.Plugins.DocumentConverter.PdfStub.dll
Add-VsConverterPlugin -FileExtension doc -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension dot -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension docm -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension dotm -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension docx -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension dotx -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension FlatOpc -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension FlatOpcMacroEnabled -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension FlatOpcTemplate -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension FlatOpcTemplateMacroEnabled -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension xml -Assembly CryptoPro.Plugins.DocumentConverter.Xml.dll -Parameters @{ "encoding"="UTF-8" }
Add-VsConverterPlugin -FileExtension odt -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension ott -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension ooxml -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension WordML -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension rtf -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension html -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension xhtml -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension mhtml -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension txt -Assembly CryptoPro.Plugins.DocumentConverter.Word.dll
#Выйти из PS
exit
# Донастройка Nginx:
# В конфигурационный файл Nginx(/etc/nginx/nginx.conf), в контекст server секцию, отвечающий за взаимодействие на
# 443 порту (https), необходимо добавить:
sudo nano /etc/nginx/nginx.conf
include /etc/opt/cprosvs/vssrv/%instanceName%/nginx.conf
Пример конфигурации:
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
worker_rlimit_nofile 8192;
events {
worker_connections 4096;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
server {
listen 443;
include mime.types;
server_name astrarakort;
include /etc/opt/cprosvs/vssrv/svs_appname/nginx.conf;
# include /etc/opt/cprosvs/vsfe/fe_appname/nginx.conf;
sspi on;
sspi_certificate 0x01CCA90B0169AE098C4F5AEEB275FA6CAB; # GOST Serial, необходимо ставить первым в список
# sspi_certificate 0x00E3CD25AA5310D07F; # RSA cert serial (опционально, необходимо при использовании GOST+RSA На одном порту)
sspi_protocols TLSv1.2;
}
}
#Установка сертификатов, используемых при построении и проверке цепочки сертификатов подписи:
# Установка корневых сертификатов в хранилище mroot:
sudo /opt/cprocsp/bin/amd64/certmgr -install -store mroot -file /path_to/root.cer
# В хранилище m<svs_appname>-root:
sudo /opt/cprocsp/bin/amd64/certmgr -install -store mverify-root -file /path_to/root.cer
# Установка промежуточных сертификатов в хранилище m<svs_appname>-ca:
sudo /opt/cprocsp/bin/amd64/certmgr -install -store mverify-ca -file /path_to/ca.cer
# Установка CRL в хранилище m<svs_appname>-ca:
sudo /opt/cprocsp/bin/amd64/certmgr -install -crl -store mverify-ca -file /path_to/ca.crl
# Перезапуск nginx
sudo systemctl restart nginx.service
# Проверка работоспособности nginx
sudo systemctl status nginx.service
#Перезапуск демонов
sudo systemctl daemon-reload
#Запуск сервиса SVS
sudo systemctl start cprosvs-vssrv-%intanceName%.service
#Проверка статуса службы SVS
sudo systemctl status cprosvs-vssrv-%intanceName%.service
#Просмотр журнала работы службы
sudo tail -f /var/log/syslog
#Настройка Веб-интерфейса КриптоПро SVS:
#Установка Веб-интерфейса КриптоПро SVS (если не была выполнена ранее)
sudo dpkg -i cprosvs-fe_1.0.318-prerelease-1_amd64.deb
sudo pwsh
Import-Module /opt/cprosvs/powershell/Modules/CryptoPro.VerificationService.Frontend.PowerShell/CryptoPro.VerificationService.Frontend.PowerShell.psd1
#Создание экземпляра Веб-интерфейса КриптоПро SVS:
Add-VsFeInstance -DisplayName %instanceName% -ApplicationName %instanceName%
# Пример: Add-VsFeInstance -DisplayName verify -ApplicationName verify
#Настройка экземпляра Веб-интерфейса КриптоПро SVS:
#VSAppName - имя веб-приложения Сервиса Проверки Подписи (не Веб-Интерфейса Сервиса Проверки Подписи)
Set-VsFeProperties -DisplayName {{VsFeAppName}} -BaseUrl "https://{{hostName}}/{{VsAppName}}"
# Пример: Set-VsFeProperties -DisplayName verify -BaseUrl "https://astrarakort/vs"
# Настройка allowedCorsOrigins (если компоненты развернуты на разных серверах)
# Список допустимых источников запросов (адресов, конечных точек и т.д.) к API SVS для протокола CORS (возможно указание нескольких имен через запятую).
# Например, имя машины, на которой развернут Веб-интерфейс SVS (Переменная server_name из контекста server, соответствующего Веб-интерфейсу SVS, файла конфигурации /etc/nginx/nginx.conf)
Set-VsProperties -AllowedCorsOrigins https://<server_name>
# Донастройка nginx
#По аналогии с предыдущим пунктом необходимо добавить в конфигурацию nginx информацию об экземпляре Веб-Сервиса SVS:
# В конфигурационный файл Nginx(/etc/nginx/nginx.conf), в контекст server секцию, отвечающий за взаимодействие на
# 443 порту (https), необходимо добавить:
# ВНИМАНИЕ! Строчки должны находиться в контексте server с настроенным сертификатом проверки подлинности сервера (TLS).
sudo nano /etc/nginx/nginx.conf
include /etc/opt/cprosvs/vssrv/svs_appname/nginx.conf;
include /etc/opt/cprosvs/vsfe/fe_appname/nginx.conf;
# Активация и запуск Сервиса Проверки:
sudo systemctl enable cprosvs-vssrv-svs_appname.service
sudo systemctl start cprosvs-vssrv-svs_appname.service
# Перезапуск службы КриптоПро SVS
sudo systemctl restart cprosvs-vssrv-<instanceName>.service
# ИЛИ
Restart-VsInstance -DisplayName
# Перезапуск nginx
sudo systemctl restart nginx.service
# Проверка статуса службы nginx
sudo systemctl status nginx.service