Настройка подключения к КриптоПро HSM
Внимание!
Перед выполнением данного этапа необходимо выполнить подготовительный этап и установить КриптоПро Ключ и дополнительное ПО.
1. Настройка криптопровайдеров
Добавьте криптопровайдеры для КриптоПро HSM в конфигурацию КриптоПро CSP.
sudo -s
cd /opt/cprocsp/sbin/amd64/
#75 провайдер
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro HSM CSP' -add string 'Image Path' /opt/cprocsp/lib/amd64/libcspr.so
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro HSM CSP' -add string 'Function Table Name' CPSRV_GetFunctionTable
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro HSM CSP' -add long Type 75
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro HSM CSP' -add string Channel .clientk2
#80 провайдер
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro GOST R 34.10-2012 HSM CSP' -add string 'Image Path' /opt/cprocsp/lib/amd64/libcspr.so
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro GOST R 34.10-2012 HSM CSP' -add string 'Function Table Name' CPSRV_GetFunctionTable
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro GOST R 34.10-2012 HSM CSP' -add long Type 80
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro GOST R 34.10-2012 HSM CSP' -add string Channel .clientk2
#81 провайдер
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro GOST R 34.10-2012 Strong HSM CSP' -add string 'Image Path' /opt/cprocsp/lib/amd64/libcspr.so
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro GOST R 34.10-2012 Strong HSM CSP' -add string 'Function Table Name' CPSRV_GetFunctionTable
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro GOST R 34.10-2012 Strong HSM CSP' -add long Type 81
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro GOST R 34.10-2012 Strong HSM CSP' -add string Channel .clientk2
#24 RSA-провайдер
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro Enhanced RSA and AES HSM CSP' -add string 'Image Path' /opt/cprocsp/lib/amd64/libcspr.so
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro Enhanced RSA and AES HSM CSP' -add string 'Function Table Name' CPSRV_GetFunctionTable
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro Enhanced RSA and AES HSM CSP' -add long Type 24
./cpconfig -ini '\cryptography\Defaults\Provider\Crypto-Pro Enhanced RSA and AES HSM CSP' -add string Channel .clientk2
exit
После выполнения настройки перезапустите службу CSP:
sudo systemctl restart cprocsp.service
2. Настройка сертификатов для доступа к КриптоПро HSM
Установите сертификат доступа к HSM с привязкой к закрытому ключу в хранилище mmy:
sudo /opt/cprocsp/bin/amd64/certmgr -inst -file hsm_access.pfx -pfx -pin {{ПИН-код к сертификату}} -store mmy
Установите корневой сертификат HSM в хранилище mroot:
sudo /opt/cprocsp/bin/amd64/certmgr -inst -file hsm_root.cer -store mroot
3. Настройка stunnel
Создайте директорию и файл конфигурации stunnel:
sudo mkdir /etc/opt/cprocsp/stunnel
sudo touch /etc/opt/cprocsp/stunnel/stunnel.conf
Добавьте следующее содержимое в файл /etc/opt/cprocsp/stunnel.conf
:
pid = /var/opt/cprocsp/tmp/stunnel-k2.pid
output = /var/log/stunnel-k2.log
socket = r:TCP_NODELAY=1
socket = r:SO_KEEPALIVE=1
TIMEOUTidle = 2147483
debug = 0
for_hsm = yes
[clientk2]
client = yes
#IP HSM
#Порт для подключения 1501 - зашифрованное соединение, 1503 - нешифрованное
connect = *.*.*.*:1501
accept = /var/opt/cprocsp/tmp/.clientk2
#Путь к сертификату для доступа к HSM
cert = /...cer
#Пин-код для ключа доступа к HSM. Строка необходима в случае, когда установлен ПИН-код на ключевой контейнер
pincode = ****
Запустите процесс stunnel_fork
:
sudo -u cprokey-srv /opt/cprocsp/sbin/amd64/stunnel_fork
Проверьте доступность криптопровайдеров КриптоПро HSM:
/opt/cprocsp/bin/amd64/csptest -enum -provider "Crypto-Pro HSM CSP" -provtype 75 -info
/opt/cprocsp/bin/amd64/csptest -enum -provider "Crypto-Pro GOST R 34.10-2012 HSM CSP" -provtype 80 -info
/opt/cprocsp/bin/amd64/csptest -enum -provider "Crypto-Pro GOST R 34.10-2012 Strong HSM CSP" -provtype 81 -info
/opt/cprocsp/bin/amd64/csptest -enum -provider "Crypto-Pro Enhanced RSA and AES HSM CSP" -provtype 24 -info
Примерный результат выполнения предыдущей команды:
CSP (Type:80) v5.0.10001 KB2 Release Ver:5.0.10001 OS:Linux CPU:AMD64 FastCode:READY:AVX,AVX2.
CryptAcquireContext succeeded.HCRYPTPROV: 28100867
GetProvParam(...PP_ENUMALGS...) until it returns false
Algid Bits Type NameLen AlgName
__________________________________________________
0000661eh 256 Encrypt 14 GOST 28147-89
00008021h 256 Hash 18 GR 34.11-2012 256
00002e49h 512 Signature 18 GR 34.10-2012 256
0000aa46h 512 Exchange 18 DH 34.10-2012 256
0000aa47h 512 Exchange 18 DH 34.10-2012 256
0000801fh 32 Hash 19 HMAC GOST 28147-89
Cycle exit when getting data. 6 items found. Level completed without problems.
Total: SYS: 0,010 sec USR: 0,000 sec UTC: 0,150 sec
[ErrorCode: 0x00000000]
4. Настройка автозапуска stunnel
.
Создайте файл /etc/systemd/system/stunnel.service
следующей командой:
sudo nano /etc/systemd/system/stunnel.service
Добавьте в файл stunnel.service
следующее содержимое:
[Unit]
Description=stunnel_fork
After=network.target
[Service]
Type=forking
ExecStart=/opt/cprocsp/sbin/amd64/stunnel_fork
ExecReload=/bin/kill -HUP -$MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
Запустите stunnel
:
sudo systemctl enable --now stunnel.service