Linux криптопро скопировать контейнер

Содержание
  1. 1С и Linux
  2. вторник, 27 ноября 2018 г.
  3. КриптоПро перенос контейнера с WIN на Linux
  4. Работа с КриптоПро на linux сервере
  5. С жесткого диска
  6. Проверка успешности установки закрытого ключа
  7. Добавление тестового сертификата
  8. Удаление сертификата
  9. Проверка сертификата
  10. Просмотр всех атрибутов сертификата
  11. Экспорт сертификатов на другую машину
  12. Подписание документа ЭЦП
  13. Проверка подписи ЭЦП
  14. Получение исходного файла
  15. Настройка службы точного времени
  16. Установка сертификатов на Linux
  17. Установка .cer (только открытая часть)
  18. Установка из .key (скопированные с носителя 6 файлов ключа)
  19. Установка сертификата с токена\флэш-накопителя
  20. Установка открытой части в контейнер закрытого ключа
  21. Установка корневых сертификатов и списков отзыва
  22. Установка корневого сертификата удостоверяющего центра
  23. Через терминал
  24. Через графический интерфейс
  25. Установка списка отозванных сертификатов
  26. Установка цепочки промежуточных сертификатов

1С и Linux

Пишу для себя, чтобы не забыть как делал. 95 % рабочее. На комментарии отвечаю, когда увижу.

вторник, 27 ноября 2018 г.

КриптоПро перенос контейнера с WIN на Linux

Копируем контейнер 2018-07-.000 с машины windows:
в /var/opt/cprocsp/keys/user/2018-07-.000

$ /opt/cprocsp/bin/amd64/csptest -keyset -verifycontext -enum -unique
CSP (Type:80) v4.0.9017 KC1 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 35902435
2018-07-02 16-30-20 ▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒ — ▒▒▒▒▒ — ▒▒▒▒▒ — ▒▒▒▒▒|HDIMAGE\\2018-07-.000\0A6B
OK.
Total: SYS: 0,020 sec USR: 0,100 sec UTC: 0,140 sec
[ErrorCode: 0x00000000]

Если получили крякозяблики в имени контейнера пробуем вывести сведения вот так:

$ /opt/cprocsp/bin/amd64/csptest -keyset -enum -verifycontext -fqcn | iconv -f cp1251
CSP (Type:80) v4.0.9017 KC1 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 10499043
\\.\HDIMAGE\2018-07-02 16-30-20 ООО XXXX XXXX КЭП — копия — копия — копия
OK.
Total: SYS: 0,030 sec USR: 0,120 sec UTC: 0,180 sec
[ErrorCode: 0x00000000]

В случае если контейнер создан в ОС Windows и имеет в имени кириллицу, импорт конкретного контейнера в случае cp1251

$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont «$(echo ‘HDIMAGE\\2018-07-.000\0A6B’ | iconv -t cp1251)»

Далее нам нужно получить сертификат головного УЦ выдавшего Ваш сертификат. Для этого нам нужно вывести список сертификатов установленных в хранилище личных сертификатов пользователя:

$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
CA cert URL : http://www.dp.keydisk.ru/root/833/astral-833-2017n.cer

Нам нужно значение поля “CA cert URL”, автоматически скачать сертификаты удостоверяющих центров можно так:

$ mkdir CAs
$ wget -P CAs $(/opt/cprocsp/bin/amd64/certmgr -list -store uMy | awk ‘/CA cert URL/ < print $5 >‘) for cert in $(ls -1 CAs/*.crt); do sudo /opt/cprocsp/bin/amd64/certmgr -inst -store mRoot -file $cert; done

Источник

Работа с КриптоПро на linux сервере

Скопировать в корень дискеты или флэшки сертификат и приватный ключ (из каталога 999996.000 , 999996 — название (alias) контейнера):

cp -R /path/to/key/999996.000 /media/flashdrive/ cp /path/to/cert/client.cer /media/flashdrive/

Выполнить команду по копированию ключа с флэшки на диск, ключ попадет в пользовательское хранилище My .

Читайте также:  Firefox profile missing or inaccessible linux

gate@example.com — то, что прописано в поле E сертификата (можно посмотреть командой keytool —printcert -file /path/to/cert/client.cer ):

csptest -keycopy -src '\\.\FLASH\gate@example.com' -dest '\\.\HDIMAGE\999996'

С жесткого диска

Скопировать приватный ключ в хранилище (контейнер), где — имя пользователя linux:

cp -R /path/to/key/999996.000 /var/opt/cprocsp/keys/username>/

Поставить «минимальные» права:

chmod 600 /var/opt/cprocsp/keys/username>/999996.000/*

Узнать реальное название контейнера:

csptest -keyset -enum_cont -verifycontext -fqcn

Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище My :

certmgr -inst -file /path/to/file/client.cer -cont '\\.\HDIMAGE\999996'

Если следующая ошибка, нужно узнать реальное название контейнера (см. выше):

Failed to open container \\.\HDIMAGE\ [ErrorCode: 0x00000002]

Установить сертификат УЦ из-под пользователя root командой:

certmgr -inst -store uroot -file /path/to/file/CA.cer

Проверка успешности установки закрытого ключа

PrivateKey Link

Если выводится PrivateKey Link: Yes. Container: HDIMAGE\\999996.000\D7BB , то есть и сертификат, и приватный ключ, а если выводится PrivateKey Link: No — связи нет, и использовать такой контейнер для подписи не удастся.

Добавление тестового сертификата

Добавление работает только на той же машине, и в тот же контейнер, где был сформированы следующий запрос на добавление:

cryptcp -creatrqst -dn 'cn=test' -cont '\\.\hdimage\test' test.csr

Ввести пароль на контейнер test123 .

cryptcp -creatrqst -dn 'e=email@test.ru,cn="тест тест",c=rus,l="москва",o="текст тест"' -cont '\\.\hdimage\myname' myname.csr
cryptcp -instcert -cont '\\.\hdimage\test' certnew.cer

Ввести пароль на контейнер. По-умолчанию: 12345678

Удаление сертификата

Проверка сертификата

1------- Issuer : E=cpca@cryptopro.ru, C=RU, L=Москва, O=ООО КРИПТО-ПРО, CN=УЦ KPИПTO-ПPO Subject : E=info@site.ru, C=RU, L=г. Москва, O="ООО ""Верес""", OU=Руководство, CN=Иванов Иван Иванович, T=Генеральный директор Serial : 0x75F5C86A000D00016A5F SHA1 Hash : 0x255c249150efe3e48f1abb3bc1928fc8f99980c4 Not valid before : 08/12/2014 09:04:00 UTC Not valid after : 08/12/2019 09:14:00 UTC PrivateKey Link : No

Подписание пустого файла (размер 0) проходит успешно, но при просмотре сертификатов этого файла выдается ошибка:

Can't open certificate store: '/tmp/tmp.G8cd13vzfZ.sig'. Error: No certificate found. /dailybuilds/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:312: 0x2000012D [ErrorCode: 0x2000012d]

Просмотр всех атрибутов сертификата

В cryptcp нет необходимых инструментов для получения всех атрибутов сертификата. Поэтому следует использовать openssl , но настроив его.

certmgr -list -f file.sig | grep 'SHA1 Hash'

В цикле извлекаем сертификаты:

cryptcp -nochain -copycert -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -f file.sig -df certificate.der -der
openssl x509 -in certificate.der -inform der -text -noout
openssl_conf = openssl_def # Это в начало файла #Все что ниже в конец [openssl_def] engines = engine_section [engine_section] gost = gost_section [gost_section] engine_id = gost dynamic_path = /usr/lib/ssl/engines/libgost.so # заменить реальным файлом default_algorithms = ALL CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
openssl ciphers | tr ":" "\n" | grep -i gost GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89

Экспорт сертификатов на другую машину

Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys . Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.

Экспорт самих сертификатов (если их 14):

for i in `seq 1 14`; do echo $i | certmgr -export -dest $i.cer; done

Переносим эти файлы на машину и смотрим, какие контейнеры есть:

csptest -keyset -enum_cont -verifycontext -fqcn

И как обычно, связываем сертификат и закрытый ключ:

certmgr -inst -file 1.cer -cont '\\.\HDIMAGE\container.name'

Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:

Can not install certificate Public keys in certificate and container are not identical

Если нет закрытого ключа, то просто ставим сертификат:

Подписание документа ЭЦП

cryptcp -sign (КПС1) -nochain -pin pincode src.txt dest.txt.sig

Пример создания ЭЦП (по SHA1 Hash):

cryptcp -sign -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -nochain -pin test test.txt test.txt.sig
[ReturnCode: x] Описание Возвращаемый код завершения в баше $?
0 успешно 0
0x8010006b Введен неправильный PIN 107
0x2000012d Сертификат не найден 45
0x20000065 Не удалось открыть файл 101

Проверка подписи ЭЦП

Для верифицирования сертификатов нужен сертификат удостоверяющего центра и актуальный список отзыва сертификатов, либо настроенный для этого revocation provider.

Корневой сертификат УЦ, список отзыва сертификата является одним из реквизитов самого сертификата.

Контрагенты когда открывают подписи в КриптоАРМ используют revocation provider, он делает проверки отзыва сертификата онлайн. Как реализована проверка в Шарепоинте не знаю. Знаю только что используется библиотека Крипто.Net

Проверка конкретной подписи из локального хранилища по его хешу:

cryptcp -verify -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -nochain test.txt.sig

Проверить, взяв сертификат из file1.sig , подпись файла file2.sig . Практически, надо использовать один и тот же файл:

cryptcp -verify -norev -f file1.sig file2.sig
Certificates found: 2 Certificate chains are checked. Folder './': file.xls.sig. Signature verifying. Signer: Старший инженер, Иванов Иван Иванович, Отдел закупок, ООО «Верес», Москва, RU, info@site.ru Signature's verified. Signer: Генеральный директор, Сидоров Иван Петрович, Руководство, ООО «Кемоптика», Москва, RU, info@site.ru Signature's verified. [ReturnCode: 0]
[ReturnCode: x] Текст Описание Возвращаемый код завершения в баше $?
0 Успешно 0
0x80091004 Invalid cryptographic message type Неправильный формат файла 4
0x80091010 The streamed cryptographic message is not ready to return data Пустой файл 16

Получение исходного файла

Получение исходного файла (сообщения):

cryptcp -verify -nochain file.sig file.txt

Будет ругаться на сертификат (так как не будет проверки), но подпись удалит. Вариант с проверкой:

cryptcp -verify -nochain -f file.sig file.sig file.txt

Настройка службы точного времени

apt-get install ntp ntpdate

Необходимо добавить сервера:

# You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example server ntp1.stratum2.ru server ntp2.stratum2.ru

Источник

Установка сертификатов на Linux

  1. Открыть «Инструменты КриптоПро», вкладка «Сертификаты»;
  2. Нажать «Импортировать ключи».
    По умолчанию при импорте ключ копируется на ваш ПК. Если требуется использовать сертификат на съёмном носителе, его нужно скопировать на носитель и после установить;

Перейти в место хранения сертификата, выбрать его и нажать «Открыть»;

Ввести пароль от сертификата, заданный при выгрузке, и нажать «ОК»;

В новом окне можно задать пароль на сертификат. Если пароль не нужен, оставить поля пустыми и нажать «ОК»;

  • Сертификат появится в списке сертификатов.
  • Установка .cer (только открытая часть)

    1. Открыть «Инструменты КриптоПро», вкладка «Сертификаты»;
    2. Нажать «Показать расширенные» и поставить галку «Отключить автовыбор хранилища (использовать текущее)».
      Если галку не ставить, «КриптоПро» автоматически будет определять хранилище для сертификатов. Личные сертификаты попадут в хранилище «Другие пользователи»;

    Перейти в выпадающем меню в нужное хранилище сертификатов и нажать «Установить сертификаты»;

    Перейти в место хранения сертификата, выбрать его и нажать «Открыть»;

  • Окно закроется, на вкладке появится строка с установленным сертификатом.
  • Установка из .key (скопированные с носителя 6 файлов ключа)

      Скопировать папку с файлами в папку локального хранения контейнеров «КриптоПро», по умолчанию «/var/opt/cprocsp/keys/имя_пользователя»;

  • После установки сертификат появится на вкладке «Сертификаты».
  • Установка сертификата с токена\флэш-накопителя

    1. Подключить накопитель или токен к вашему ПК;
    2. В «Инструментах КриптоПро» перейти на вкладку «Контейнеры» и выбрать нужный контейнер на носителе;
    3. Нажать «Установить сертификат»;

  • После установки сертификат появится на вкладке «Сертификаты».
  • Установка открытой части в контейнер закрытого ключа

    Выполнить команду:/opt/cprocsp/bin/amd64/certmgr -inst -inst_to_cont -ask-container -pin «пин-код токена» -file “путь к файлу сертификата”

    Пример:/opt/cprocsp/bin/amd64/certmgr -inst -inst_to_cont -ask-container -pin «12567» -file /path/to/certificate.cer

    Установка корневых сертификатов и списков отзыва

    Установка корневого сертификата удостоверяющего центра

    Вам необходимо воспользоваться любым из способов:

    Через терминал

    Выполнить команду: /opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/.cer -store uRoot

    Через графический интерфейс

      Открыть «Инструменты КриптоПро», нажать «Показать расширенные»;

  • Поставить галку «Отключить автовыбор хранилища (использовать текущее)»;
  • В выпадающем меню выбрать «Доверенные корневые центры сертификации»;

  • Нажать «Установить сертификаты», в открывшемся меню найти файл сертификата центра сертификации и нажать «Открыть»;
  • Может появиться сообщение-предупреждение о том, что установка корневых сертификатов несет риск безопасности. Нужно нажать «ОК»;
  • Внизу окна появится сообщение «Установка завершена». Если его развернуть, появится информация о совершенном действии.

    Установка списка отозванных сертификатов

    Выполнить команду:/opt/cprocsp/bin/amd64/certmgr -inst -crl -file ~/Загрузки/.crl

    Установка цепочки промежуточных сертификатов

    Выполнить команду:/opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/.p7b -store CA

    Источник

  • Оцените статью
    Adblock
    detector