Linux криптопро проверка сертификата

Linux криптопро проверка сертификата

В данной статье мы описываем процесс установки и настройки КриптоПро CSP на ОС Linux (на примере Debian 11).

Она будет полезна вам, если вы получили ключ и сертификат в ФНС и используете ОС Linux для работы.

Порядок настройки:

1) Установка КриптоПро CSP 5.0:

1.1. Выполните регистрацию на сайте нашей компании. Если Вы уже зарегистрированы – выполните вход (необходимо ввести адрес электронной почты и пароль, которые Вы указывали при регистрации)

1.2. Перейдите на страницу загрузки дистрибутивов КриптоПро CSP

1.3. Ознакомьтесь с условиями лицензионного соглашения и нажмите кнопку «Я согласен с лицензионным соглашением. Перейти к загрузке»

1.4. Нажмите кнопку «Скачать для Linux», для загрузки дистрибутива актуальной версии КриптоПро CSP

1.5. Распакуйте загруженный архив: tar -xvf linux-amd64_deb.tgz && cd linux-amd64_deb

1.6. Запустите установку в графическом интерфейсе посредством запуска скрипта

sudo ./install_gui.sh

При установке дополнительно нужно отметить пакеты

1.7. Для корректной работы с некоторыми ключевыми носителями необходима установка дополнительного программного обеспечения:

  • pcscd (sudo apt-get install pcscd)
  • libccid (sudo apt-get install libccid)
  • Рутокен ЭЦП 2.0, Рутокен ЭЦП 3.0, Рутокен TLS — библиотека для работы через PKCS#11 интерфейс
  • JaCarta-2 ГОСТ — Единый клиент JaCarta
  • ESMART Token ГОСТ — ESMART PKI Client
  • Рутокен S — пакет ifd-rutokens_1.0.4 расположен в архиве с ПО

установка скаченных выше библиотек PKCS#11 выполняется командой

sudo dpkg -i путь до скаченной библиотеки

убедитесь, что служба pcscd запущена sudo systemctl status pcscd

если нет запустите ее sudo systemctl enable —now pcscd

2) Установка КриптоПро ЭЦП BrowserPlug-in 2.0:

Распакуйте загруженный архив: tar -xvf cades-linux-amd64.tar.gz

sudo dpkg -i cprocsp-pki-cades

sudo dpkg -i cprocsp-pki-plugin

3) Установка личного сертификата:

Установка личного сертификата с привязкой к ключевому контейнеру на ключевом носителе (при подключенном ключевом носителе):

Обзор
Показать приложения
Инструменты КриптоПро
Контейнеры
Выбрать нужный ключевой носитель
Установить сертификат

Установка облачного сертификата описана в инструкции по ссылке

Читайте также:  Manjaro linux установка java

Если настройка произведена корректно, то в поле Сертификат появится строка, соответствующая сертификату.

После выбора сертификата и нажатия кнопки Подписать появится надпись Подпись сформирована успешно.

5) Проверка статуса лицензии КриптоПро CSP 5.0:

Обзор
Показать приложения

Инструменты КриптоПро
Общее

6) Активация лицензии КриптоПро CSP 5.0:

Обзор
Показать приложения
Инструменты КриптоПро
Общее
Ввести лицензию для меня

Дополнительная информация по работе с лицензиями доступна по ссылке .

a) При необходимости отдельной установки сертификатов

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

Обзор
Показать приложения
Инструменты КриптоПро
Сертификаты
Установить сертификаты
выбрать файл с нужным сертификатом

b) Для работы на портале nalog.ru необходимо:

— иметь в наличии квалифицированный сертификат электронной подписи и соответствующий ему ключ,

— для входа в личный кабинет ИП или ЮЛ с помощью электронной подписи использовать один из браузеров (рекомендуется использовать последнии доступные версии браузеров) с поддержкой ГОСТ TLS — Chromium-Gost или Яндекс.Браузер и входить по прямой ссылке:

https://lkulgost.nalog.ru/ — для юридических лиц,

c) Информация по входу на портал gosuslugi.ru доступна по ссылке .

Источник

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

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

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

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

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

Источник

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