Показать/Скрыть содержание

    Настройка подключения к КриптоПро HSM

    Внимание!

    Перед выполнением данного этапа необходимо выполнить подготовительный этап и установить КриптоПро DSS и дополнительное ПО.

    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 cprodss-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
    
    В начало © ООО "КРИПТО-ПРО", 2000–2025