Найти:

Установка сертификата в контейнер средствами КриптоПро

Установка сертификата электронной подписи в контейнер может быть удобна при последующей записи на токен: при подключении устройства сертификат автоматически импортируется в хранилище операционной системы.

Если в ОС Windows это было возможно сделать через графический интерфейс КриптоПро, то в Linux это возможно только через консольные утилиты. Для упрощения этой процедуры я написал скрипт для AutoKey. Об установке программы AutoKey вы можете прочитать в предыдущей статье.

import subprocess

CERTMGR = "/opt/cprocsp/bin/amd64/certmgr"

out_arr = subprocess.run("/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -unique", capture_output=True, shell=True).stdout.decode().split("\n")
containers = []
for i in out_arr:
    if "|" in i:
        containers.append(i)

exCont, Container = dialog.list_menu(containers, title="Выбор контейнера", message="Выберите контейнер:", default=None)
exCert, CertPath = dialog.open_file(title="Выбор сертификата", initialDir="~", fileTypes="*.cer|Сертификаты")
Container = Container.split("|")[-1]

if exCont == exCert == 0:
    p1 = subprocess.run(f"{CERTMGR} -inst -cont '{Container}' -store uMy -file '{CertPath}' -inst_to_cont", capture_output=True, shell=True)
    dialog.info_dialog("certmgr — Вывод", p1.stdout.decode())

Коротко о том, как это работает. Утилита csptest выводит список контейнеров КриптоПро. Вы выбираете нужный контейнер по его имени. Кстати, контейнеры в директории хранятся в /var/opt/cprocsp/keys/username. После этого указываете путь к сертификату, соответствующему контейнеру. Далее утилита certmgr пытается записать сертификат в контейнер. При удачном стечении обстоятельств вы получите всплывающее окно с результатом операции. Если код ошибки — ноль, то никакой ошибки нет, всё прошло успешно. Проверить это можно в разделе «Контейнеры» графической утилиты «Инструменты КриптоПро». Там же можно скопировать получившийся контейнер на токен.

Оставить комментарий

Все поля, отмеченные звёздочкой (*), обязательны к заполнению