Криптопро и КриптоПро

Криптопро и КриптоПро Электронная цифровая подпись


CryptGetProvParam в MS CryptoAPI 2.0

World Wide Web link

		













						 
















		(GetLastError() == 0x80090016 )

" The default key container does not exist.\n"
" Create a default container and generate keys \n"
" Using the code in \n"
"  Example C Program: Creating a Key Container and Generating Keys \n"
"  Before running this program. \n"


	 

"A genral error runing CryptAcquireContext."






cbData = 1000;








"Provider name: %s\n"



"Error reading CSP name. \n"




cbData = 1000;







"CryptGetProvParam succeeded. \n"
"Key Container name: %s\n"



"Error reading key container name. \n"















"CryptcontextAddRef succeeded. \n"



"Error during CryptContextAddRef!\n"










"The first call to CryptReleaseContext succeeded. \n"



"Error during CryptReleaseContext! #1 \n"






"The second call to CryptReleaseContext succeeded. \n"



"Error during CryptReleaseContext #2 !\n"







   




"CryptAcquireContext succeeded. \n"
"New key set created. \n"



"Error during CryptAcquireContext for a new key\
\ncontainer. A container with this name probably \
\nalready exists. \n"












"Created a signature key pair.\n"



"Error occurred creating a signature key.\n"

CryptDestroyKey( hKey );












"CryptReleaseContext succeeded. \n"



"Error during CryptReleaseContext!\n"








   




"Acquired the key set just created. \n"



"Error during CryptAcquireContext!\n"











"CryptReleaseContext succeeded. \n"



"Error during CryptReleaseContext!\n"








   




"CryptAcquireContext succeeded. \n"



"Error during CryptAcquireContext!\n"



	

Требования:

Windows 2000/XP/2003: Необходимо Windows 2000 SP4 или
старше с Internet Explorer 6.0 или старше.
Windows NT/95/98/ME: CSP 3.0 не поддерживает (см. КриптоПро CSP
2.0 ).
Solaris: 9 Update 4 или выше.
FreeBSD: FreeBSD 5.2 или выше
Linux: RedHat 7.3, RedHad 9.0.
Ядро Windows NT: не поддерживает.


Offline

hopyres

Оставлено
:

18 января 2022 г. 21:14:17(UTC)

Поставил КриптоПРО из AUR релиз 5.0.12330 с рукоприкладством, потому как другие пакеты скачиваются и ставятся без вопросов.
На команду /opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS -flags 32 выдает

Цитата:

CSP (Type:80) v5.0.10010 KC1 Release Ver:5.0.11455 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 38786787
GetProvParam(…PP_ENUMREADERS…) until it returns false
Flags: 0x20
Len Byte NickName/Name/Media
___________________________________
Cycle exit when getting size. 0 items found…/../../../CSPbuild/CSP/samples/csptest/enum.c:571:Error during CryptGetProvParam().

Error 0x8009000a: Указан неправильный тип.
Total: SYS: 0,000 sec USR: 0,030 sec UTC: 0,300 sec
[ErrorCode: 0x8009000a]

Что ему нужно? Brick wall

Отредактировано пользователем 20 января 2022 г. 10:28:27(UTC)
| Причина: Не указана


Online

Андрей *

Оставлено
:

18 января 2022 г. 22:23:35(UTC)

Автор: hopyres Перейти к цитате

Поставил КриптоПРО из AUR релиз 5.0.12330 с рукоприкладством, потому как другие пакеты скачиваются и ставятся без вопросов.
На команду /opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS -flags 32 выдает

Цитата:

CSP (Type:80) v5.0.10010 KC1 Release Ver:5.0.11455 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 38786787

точно 12330?


Offline

nickm

Оставлено
:

19 января 2022 г. 6:09:49(UTC)

Автор: hopyres Перейти к цитате

Поставил КриптоПРО из AUR релиз 5.0.12330 с рукоприкладством, потому как другие пакеты скачиваются и ставятся без вопросов.

Что ему нужно? Brick wall

Похоже на то, что “кривой” config64.ini.


Offline

Санчир Момолдаев

Оставлено
:

19 января 2022 г. 10:43:40(UTC)

1) скзи – товар двойного назначения. тиражирование скзи – сертифицированное фсб действие. как считаете пойдет ли aur на сертифицикацию фсб?
поэтому в пакете https://aur.archlinux.or…ckages/cryptopro-csp-k1/ надо отдельно скачивать дистрибутив.
напомню что мы к этому мейнтейнеру не имеем никакого отношения.

2) не все скрипты перенесены в скрипты пакета из аура.
поэтому совет: удалаете пакет из аура, затем ставите снова.

Код:

❯ /opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS -flags 32
CSP (Type:80) v5.0.10010 KC1 Release Ver:5.0.12330 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 27312179
GetProvParam(...PP_ENUMREADERS...) until it returns false
Flags: 0x20
  Len    Byte  NickName/Name/Media
___________________________________
 0x012a  0x00  HDIMAGE
               HDD key storage
               NO_UNIQUE
 0x012a  0x02  CLOUD
               Cloud Token
               NO_MEDIA
Cycle exit when getting data. 2 items found. Level completed without problems.
Total: SYS: 0,000 sec USR: 0,030 sec UTC: 0,040 sec
[ErrorCode: 0x00000000]
❯ cat /etc/os-release
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux-logo

Отредактировано пользователем 19 января 2022 г. 10:44:59(UTC)
| Причина: Не указана


Offline

hopyres

Оставлено
:

20 января 2022 г. 8:22:57(UTC)

Автор: Андрей * Перейти к цитате

Автор: hopyres Перейти к цитате

Поставил КриптоПРО из AUR релиз 5.0.12330 с рукоприкладством, потому как другие пакеты скачиваются и ставятся без вопросов.
На команду /opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS -flags 32 выдает

Цитата:

CSP (Type:80) v5.0.10010 KC1 Release Ver:5.0.11455 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 38786787

точно 12330?

Само приложение пишет 5.0.11455, а в AUR файле PKGBUILD указана версия 12330


Offline

Санчир Момолдаев

Оставлено
:

20 января 2022 г. 8:35:36(UTC)

скачайте дистрибутив 5.0.12330 подложите его к pkgbuild и переустановите пакет


Offline

hopyres

Оставлено
:

20 января 2022 г. 9:51:24(UTC)

Автор: Санчир Момолдаев Перейти к цитате

скачайте дистрибутив 5.0.12330 подложите его к pkgbuild и переустановите пакет

Подкинул ему дистрибутив с официального сайта и всё заработало. Anxious

Три варианта.
1. Сертификат установлен в ключевой контейнер на дискете.
Тогда, после открытия контейнера с дискеты можно считать ключ – CryptGetUserKey, если известен его тип – AT_KEYEXCHANGE или AT_SIGNATURE (если не известен – попробовать оба). Далее вызов CryptGetKeyParam с параметром KP_CERTIFICATE – получите контекст сертификата PCCERT_CONTEXT, откуда можно будет взять любую информацию.

2. Сертификат НЕ установлен в ключевой контейнер на дискете, но установлен (с привязкой к ключевому контейнеру) в хранилище “Личные” текущего пользователя Win.
Тогда обратная ситуация – перечисляете все сертификаты из хранилища и вызываете функцию открытия ключевого контейнера, пока не попадёте на этот контейнер.

3. Сертификат НЕ установлен ни в ключевой контейнер на дискете, ни в хранилище сертификатов Win с привязкой к ключу, но можно перечислить “подозрительные” (в смысле, потенциально соответствующие ключевому контейнеру) сертификаты из файла(ов) или из хранилищ. Тогда, для каждого перечисляемого сертифката – импорт открытого ключа в блоб и сравнение с блобом, импортированным из контейнера.

HCRYPTPROV hCertContainer = 0;
HCRYPTKEY hKey = 0;
LPBYTE pbUserCert;

DWORD dwCertLen;
PCCERT_CONTEXT pUserCert=0;
DWORD dwUserCertLength=0;

if(!CryptAcquireContext(&hCertContainer,
“888”, //это имя контейнера
NULL,
75, //это тип CSP – ГОСТ ..2001
0
))
HandleError(“CryptAcquireContext”);

if(!CryptGetUserKey(
hCertContainer,
AT_KEYEXCHANGE,
&hKey))

HandleError(“CryptGetUserKey”);

/* Получить сертификат.*/
if (!CryptGetKeyParam (hKey, KP_CERTIFICATE, NULL,
&dwUserCertLength, 0)) {
HandleError (“Error during GetKeyParam.\n”);

}
pbUserCert = malloc (dwUserCertLength);
if (pbUserCert == NULL) {
HandleError (“Error during malloc.\n”);

}
if (!CryptGetKeyParam (hKey, KP_CERTIFICATE, pbUserCert,
&dwUserCertLength, 0)) {
HandleError (“Error during GetKeyParam.\n”);

}
/* Декодировать сертификат */
pUserCert = CertCreateCertificateContext (
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, pbUserCert,
dwUserCertLength);
if (pUserCert == NULL) {
HandleError (“Error during CertCreateCertificateContext.\n”);

}

CryptReleaseContext(hCertContainer,0);

function GetCertNameFromCurrentContainer() : String;
var l : Cardinal;
CryptProv : HCRYPTPROV;
UserKey : HCRYPTKEY;
ProvName : String;
ProvType : Cardinal;
Container : String;
Cert_Info : String;
Cert_Context : PCCERT_CONTEXT;
TypePara : Cardinal;
Cert_Name : String;
begin
{
// Достать имя и тип первого провайдера
// Оставляю этот закомментаренный блок на случай, если понадобится узнать имя и тип провайдера
R := CryptEnumProviders(0, nil, 0, ProvType, nil, l);
if not R then begin ShowMessage(‘Ошибка узнавания длинны имени провайдера’); exit; end;
SetLength(ProvName, l);
R := CryptEnumProviders(0, nil, 0, ProvType, PChar(ProvName), l);
if not R then begin ShowMessage(‘Ошибка узнавания имени провайдера’); exit; end;
SetLength(ProvName, l – 1);
ShowMessage(‘Провайдер ‘ + IntToStr(ProvType) + ‘ [‘ + ProvName + ‘]’);
AddToLogText(‘Тип = ‘ + IntToStr(ProvType) + ‘ Имя = [‘ + ProvName + ‘]’);
AddToLogText(‘Имя (Hex) = [‘ + StringToHex(ProvName) + ‘]’);
}

ProvType := 75;
ProvName := ‘Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider’;
CryptProv := 0;
try
try
CheckError(CryptAcquireContext(CryptProv, nil, PChar(ProvName),
ProvType, CRYPT_VERIFYCONTEXT));
except
on E : Exception do begin
raise AddExceptionHeaderFooter(E, CryptoPro_Err_Prov_Connect, ”, [ProvName]);
end;
end;
// Узнаем имя контейнера
// Размер
l := 0;
try
CheckError(CryptGetProvParam(CryptProv, PP_ENUMCONTAINERS, nil, l, CRYPT_FIRST));
except
on E : Exception do begin
raise AddExceptionHeader(E, CryptoPro_Err_Get_Container_Name_Len);
end;
end;
SetLength(Container, l);
// Собственно имя
try
CheckError(CryptGetProvParam(CryptProv, PP_ENUMCONTAINERS, PByte(PChar(Container)), l, CRYPT_FIRST));
except
on E : Exception do begin
raise AddExceptionHeader(E, CryptoPro_Err_Get_Container_Name_Len);
end;
end;
finally
if (CryptProv <> 0)
then CryptReleaseContext(CryptProv, 0);
end;
// Переподключимся к конкретному контейнеру
CryptProv := 0;
try
try
CheckError(CryptAcquireContext(CryptProv, PChar(Container), PChar(ProvName),
ProvType, 0));
except
on E : Exception do begin
raise AddExceptionHeaderFooter(E, CryptoPro_Err_Prov_Container_Connect, ”, [ProvName, Container]);
end;
end;
try
CheckError(CryptGetUserKey(CryptProv, AT_KEYEXCHANGE, UserKey));
except
on E : Exception do begin
raise AddExceptionHeader(E, CryptoPro_Err_Get_Key);
end;
end;
try
CheckError(CryptGetKeyParam(UserKey, KP_CERTIFICATE, nil, l, 0));
except
on E : Exception do begin
raise AddExceptionHeader(E, CryptoPro_Err_Get_Cert_Len);
end;
end;
SetLength(Cert_Info, l);
try
CheckError(CryptGetKeyParam(UserKey, KP_CERTIFICATE, PByte(PChar(Cert_Info)), l, 0));
except
on E : Exception do begin
raise AddExceptionHeader(E, CryptoPro_Err_Get_Cert);
end;
end;
Cert_Context := nil;
try
Cert_Context := CertCreateCertificateContext(X509_ASN_ENCODING, PByte(PChar(Cert_Info)), l);
if (Cert_Context = nil) then begin
raise Exception.Create(CryptoPro_Err_CreateCertificateContext);
end;
l := 0;
l := CertGetNameString(Cert_Context, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, @TypePara, nil, l);
if (l <= 0) then begin
raise Exception.Create(CryptoPro_Err_Get_Cert_Name_Len);
end;
SetLength(Cert_Name, l);
l := CertGetNameString(Cert_Context, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, @TypePara, PChar(Cert_Name), l);
if (l <= 0) then begin
raise Exception.Create(CryptoPro_Err_Get_Cert_Name);
end;
SetLength(Cert_Name, l – 1);
Result := Cert_Name;
finally
CertFreeCertificateContext(Cert_Context);
end;
finally
if (CryptProv <> 0)
then CryptReleaseContext(CryptProv, 0);
end;
end;

Не привожу сдесь константы сообщений об ошибках и процедуру проверки результата CheckError – и без них все понятно.


Offline

Kursor

Оставлено
:

26 июля 2021 г. 10:25:45(UTC)

Добрый день, случилось такая беда.

Есть Astra Linux с КриптоПро CSP 5.0 и связкой с КриптоПро HSM. Все работает – красота. После обновления до 5.0R2 все не работает – ужас. После отката обратно на версию 5.0 все работает – красота. Далее подробнее:

При попытки обновить КриптоПро 5.0 (v5.0.10003 KC2) до КриптоПро 5.0 R2 (v5.0.10008 KC2) возникают следующие ошибки:
1. При настройки пакета lsb-cprocsp-rdr-64 (5.0.12000-6)

Код:

"Adding CPSD failed
Error code:-2146435049
Указанное устройство чтения в данный момент недоступно."

2. При настройки пакета lsb-cprocsp-kc2-64 (5.0.12000-6)

Код:

"Adding hdimage failed
Error code:-2146435049
Указанное устройство чтения в данный момент недоступно."

При попытки проверки связи с КриптоПро HSM получаем ошибку (если откатиться на КриптоПро 5.0 (v5.0.10003 KC2) то ошибка исчезает):

Код:

opt/cprocsp/bin/amd64/csptest -enum -provider "Crypto-Pro GOST R 34.10-2012 HSM CSP" -provtype 80 -info
../../../../CSPbuild/CSP/samples/support/getcspparam.c:28:Can not get CSP param: AcquireContext failed.
Error 0x2746: Удаленный хост принудительно разорвал существующее подключение.
../../../../CSPbuild/CSP/samples/csptest/enum.c:420:Error during CryptAcquireContext.

Error 0x2746: Удаленный хост принудительно разорвал существующее подключение.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,030 sec
[ErrorCode: 0x00002746]

В логах stunnel следующе:

2021.07.23 12:43:41 LOG7[17866:0]: clientk2 accepted FD=10 from unix socket
2021.07.23 12:43:41 LOG7[17955:0]: client start
2021.07.23 12:43:41 LOG7[17955:0]: clientk2 started
2021.07.23 12:43:41 LOG5[17955:0]: impersonate OK
2021.07.23 12:43:41 LOG7[17955:0]: FD 10 in non-blocking mode
2021.07.23 12:43:41 LOG5[17955:0]: clientk2 connected from unix socket
2021.07.23 12:43:41 LOG7[17955:0]: FD 16 in non-blocking mode
2021.07.23 12:43:41 LOG7[17955:0]: clientk2 connecting
2021.07.23 12:43:41 LOG7[17955:0]: connect_wait: waiting 10 seconds
2021.07.23 12:43:41 LOG7[17955:0]: connect_wait: connected
2021.07.23 12:43:41 LOG7[17955:0]: Remote FD=16 initialized
2021.07.23 12:43:41 LOG7[17955:0]: SO_KEEPALIVE option set on remote socket
2021.07.23 12:43:41 LOG7[17955:0]: TCP_NODELAY option set on remote socket
2021.07.23 12:43:41 LOG7[17955:0]: start SSPI connect
2021.07.23 12:43:41 LOG5[17955:0]: try to read the client certificate
2021.07.23 12:43:41 LOG7[17955:0]: open file /root/user.cer with certificate
2021.07.23 12:43:41 LOG5[17955:0]: pincode option is present. Call CryptSetProvParam
2021.07.23 12:43:41 LOG7[17866:0]: Cleaning up the signal pipe
2021.07.23 12:43:41 LOG7[17866:0]: Process 17955 terminated on signal 11 (0 left)

Сведения о ОС:
Astra Linux SE 4.15.3-1-hardened

Отредактировано пользователем 26 июля 2021 г. 10:27:38(UTC)
| Причина: Не указана


Offline

Александр Лавник

Оставлено
:

26 июля 2021 г. 14:25:19(UTC)

Автор: Kursor Перейти к цитате

Добрый день, случилось такая беда.

Есть Astra Linux с КриптоПро CSP 5.0 и связкой с КриптоПро HSM. Все работает – красота. После обновления до 5.0R2 все не работает – ужас. После отката обратно на версию 5.0 все работает – красота. Далее подробнее:

При попытки обновить КриптоПро 5.0 (v5.0.10003 KC2) до КриптоПро 5.0 R2 (v5.0.10008 KC2) возникают следующие ошибки:
1. При настройки пакета lsb-cprocsp-rdr-64 (5.0.12000-6)

Код:

"Adding CPSD failed
Error code:-2146435049
Указанное устройство чтения в данный момент недоступно."

2. При настройки пакета lsb-cprocsp-kc2-64 (5.0.12000-6)

Код:

"Adding hdimage failed
Error code:-2146435049
Указанное устройство чтения в данный момент недоступно."

При попытки проверки связи с КриптоПро HSM получаем ошибку (если откатиться на КриптоПро 5.0 (v5.0.10003 KC2) то ошибка исчезает):

Код:

opt/cprocsp/bin/amd64/csptest -enum -provider "Crypto-Pro GOST R 34.10-2012 HSM CSP" -provtype 80 -info
../../../../CSPbuild/CSP/samples/support/getcspparam.c:28:Can not get CSP param: AcquireContext failed.
Error 0x2746: Удаленный хост принудительно разорвал существующее подключение.
../../../../CSPbuild/CSP/samples/csptest/enum.c:420:Error during CryptAcquireContext.

Error 0x2746: Удаленный хост принудительно разорвал существующее подключение.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,030 sec
[ErrorCode: 0x00002746]

В логах stunnel следующе:

2021.07.23 12:43:41 LOG7[17866:0]: clientk2 accepted FD=10 from unix socket
2021.07.23 12:43:41 LOG7[17955:0]: client start
2021.07.23 12:43:41 LOG7[17955:0]: clientk2 started
2021.07.23 12:43:41 LOG5[17955:0]: impersonate OK
2021.07.23 12:43:41 LOG7[17955:0]: FD 10 in non-blocking mode
2021.07.23 12:43:41 LOG5[17955:0]: clientk2 connected from unix socket
2021.07.23 12:43:41 LOG7[17955:0]: FD 16 in non-blocking mode
2021.07.23 12:43:41 LOG7[17955:0]: clientk2 connecting
2021.07.23 12:43:41 LOG7[17955:0]: connect_wait: waiting 10 seconds
2021.07.23 12:43:41 LOG7[17955:0]: connect_wait: connected
2021.07.23 12:43:41 LOG7[17955:0]: Remote FD=16 initialized
2021.07.23 12:43:41 LOG7[17955:0]: SO_KEEPALIVE option set on remote socket
2021.07.23 12:43:41 LOG7[17955:0]: TCP_NODELAY option set on remote socket
2021.07.23 12:43:41 LOG7[17955:0]: start SSPI connect
2021.07.23 12:43:41 LOG5[17955:0]: try to read the client certificate
2021.07.23 12:43:41 LOG7[17955:0]: open file /root/user.cer with certificate
2021.07.23 12:43:41 LOG5[17955:0]: pincode option is present. Call CryptSetProvParam
2021.07.23 12:43:41 LOG7[17866:0]: Cleaning up the signal pipe
2021.07.23 12:43:41 LOG7[17866:0]: Process 17955 terminated on signal 11 (0 left)

Сведения о ОС:
Astra Linux SE 4.15.3-1-hardened

Здравствуйте.

Вопрос решается в рамках обращения № 39682 на портале технической поддержки.

CryptoPro

Единое, асинхронное API для взаимодействия с КриптоПРО ЭЦП Browser Plug-In (IE8+)

Поддерживаемые браузеры

Список необходимых полифиллов (подключаются самостоятельно):

  • Promise
  • EventTarget.addEventListener
  • Array.prototype.forEach
  • Array.prototype.map

Установка и настройка

NPM

Bower

Для корректной работы используйте:

  1. КриптоПРО CSP (v3.6+) рекомендуется использование только сертифицированных версий. Инструкция по установке:
    • Linux / OSX
    • (в Windows следуйте указаниям программы-установщика)
  2. КриптоПРО ЭЦП browser plug-in (v1.5+). Инструкция по установке:
    • Linux
    • (в Windows и OSX следуйте указаниям программы-установщика)

Затем установите необходимые сертификаты в систему. Инструкция для Linux / OSX.

Установка КриптоПРО CSP в Linux / OSX

Процесс установки в OSX незначительно отличается от Linux, поэтому описание приведено на примере дистрибутива семейства Debian (x64).

Некоторые команды могут потребовать запуска с sudo.
Названия файлов и директорий могут отличаться из-за различий в версиях.

После загрузки КриптоПРО CSP для нужной платформы, распакуйте архив:

Запустите скрипт установки:

Проверьте отсутствие cprocsp-rdr-gui:

Установите дополнительно cprocsp-rdr-gui-gtk:

Дополнительная информация по установке

Установка КриптоПРО ЭЦП browser plug-in в Linux

Загрузите КриптоПРО ЭЦП browser plug-in и распакуйте его:

Сконвертируйте rpm в deb пакеты при помощи утилиты alien:

Проверьте наличие файлов плагина:

Настройка плагина для Firefox (до версии 52):

После настройки плагина на страницах, запрашивающих работу с ЭП в панели навигации, рядом с url будет кнопка,
позволяющая “разрешить и запомнить” использование установленного плагина.

Перезапустите Firefox, и убедитесь в наличии CryptoPRO Cades plugin (см. Menu -&gt; Addons).

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

В OSX процесс схож с Linux.

Подключите USB носитель с ключевыми контейнерами и проверьте результат команды:

Скопируйте ключевой контейнер \\.\FLASH\.\sidorov на жесткий диск:

Проверьте наличие нового контейнера \\.\HDIMAGE\sidor:

Установите личный сертификат:

Возможно в выводе вы ссылку на сертификат УЦ

При необходимости загрузите сертификат удостоверяющего центра и установите его командой:

После чего, при проверке установленного личного сертификата вы увидите PrivateKey Link: Yes:

API

Пример работы с API лежит в папке example.

Доступные методы

Список доступных методов можно посмотреть в файле src/api.js.

License

Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 5.0
»
Сертификат выданный налоговой JaCarta-2 PRO/ГОСТ не видит КриптоПро 5.0


Offline

PavelNN

Оставлено
:

13 октября 2021 г. 13:48:33(UTC)

Прошу помощи в решении следущей проблемы.

В налоговой получил бесплатную ЭЦП на токен JaCarta-2 PRO/ГОСТ (Номер модели JC234-12T.F16F20T01)
Определяется в диспетчере устройств как два устройства, так как на нём существуют два раздела PKI и ГОСТ:
-Aladdin R.D. Minidriver for Smart Card
-Устройство чтения смарт-карт Microsoft Usbccid (WUDF)

Установил единый клиент JaCartaUnifiedClient_2.13.3.3108_win-x64_ru-Ru
КриптоПро 5.0.12000
Операционная система Windows 7 Home 64bit

Единый клиент токен видит, на закладке ГОСТ показывает записанный в налоговой сертификат, позволяет экспортировать сертификат в файл.

КриптоПро не видит токен и соответственно сертификат.
При попытке установить личный сертификат выдёт сообщение: “Не найден контейнер, соответствующий открытому ключу сертификата”
В личный кабинет на сайте налоговой попасть не могу – выдаёт ошибку на предпоследнем этапе проверки выполнения условий подключения: “Не найден закрытый ключ сертификата.”

Для проверки пытался войти в кабинет на сайте налоговой на компьютере с КриптоПро версии 4 – те же самые ошибки.

Несколько команд csptest под спойлером:

Отредактировано пользователем 13 октября 2021 г. 15:31:18(UTC)
| Причина: Не указана


Offline

Александр Лавник

Оставлено
:

13 октября 2021 г. 14:07:04(UTC)

Автор: PavelNN Перейти к цитате

Прошу помощи в решении следущей проблемы.

В налоговой получил бесплатную ЭЦП на токен JaCarta-2 PRO/ГОСТ (Номер модели JC234-12T.F16F20T01)
Определяется в диспетчере устройств как два устройства, так как на нём существуют два раздела PKI и ГОСТ:
-Aladdin R.D. Minidriver for Smart Card
-Устройство чтения смарт-карт Microsoft Usbccid (WUDF)

Установил единый клиент JaCartaUnifiedClient_2.13.3.3108_win-x64_ru-Ru
КриптоПро 5.0.12000
Операционная система Windows 7 Home 64bit

Единый клиент токен видит, на закладке ГОСТ показывает записанный в налоговой сертификат, позволяет экспортировать сертификат в файл.

КриптоПро не видит токен и соответственно сертификат.
При попытке установить личный сертификат выдёт сообщение: “Не найден контейнер, соответствующий открытому ключу сертификата”
В личный кабинет на сайте налоговой попасть не могу – выдаёт ошибку на предпоследнем этапе проверки выполнения условий подключения: “Не найден закрытый ключ сертификата.”

Для проверки пытался войти в кабинет на сайте налоговой на компьютере с КриптоПро версии 4 – те же самые ошибки.

Несколько команд csptest под спойлером:

Здравствуйте.

Попробуйте использовать сборку КриптоПро CSP 5.0 R2 с библиотеками PKCS#11 для токенов.

thanks 1 пользователь поблагодарил Александр Лавник за этот пост.


Offline

PavelNN

Оставлено
:

13 октября 2021 г. 15:30:13(UTC)

Александр, спасибо, всё получилось!
Установил, перезагрузил – КриптоПро определяет Jacarta.

На сайте налоговой удалось запустить процедуру создания личного кабинета.
На последнем этапе столкнулся с проблемой подписания и отправки соглашения (ошибка ERR_BAD_SSL_CLIENT_AUTH_CERT), но экспериментируя с входом через ЯндексБраузер и Internet Explorer, отключением установленных расширений в браузере и настройкой функции “Проверять защищенные соединения” Касперского, в итоге всё получилось, жду создания и наполнения личного кабинета.

Еще раз спасибо за оперативный и результативный ответ.


Offline

Grey

Оставлено
:

13 октября 2021 г. 15:59:37(UTC)

Добрый день.
Уточню немного ответ. Можно было обойтись и без переустановки провайдера. У вас стоял необходимый набор продуктов.
Единственное – в сертифицированной версии CSP 5.0 R2 нет по умолчанию регистрации работы с библиотеками из состава ЕК JaCarta (это нужно только пользователям ФНС).
Можно включить в Панели управления CSP:

Панель управления – КриптоПро CSP – Оборудование – Настроить считыватели – Считыватель смарт-карт PKCS#11 – Удалить – Добавить – Считыватель смарт-карт PKCS#11.

https://support.cryptopr…topro-ssp-50-r2-i-pkcs11

С уважением,
Сергей Агафьин,
Начальник отдела разработки ФКН.
Техническую поддержку оказываем здесь.
Наша база знаний.

thanks 1 пользователь поблагодарил Grey за этот пост.


Offline

PavelNN

Оставлено
:

13 октября 2021 г. 23:54:08(UTC)

Автор: Grey Перейти к цитате

Добрый день.
Уточню немного ответ. Можно было обойтись и без переустановки провайдера. У вас стоял необходимый набор продуктов.
Единственное – в сертифицированной версии CSP 5.0 R2 нет по умолчанию регистрации работы с библиотеками из состава ЕК JaCarta (это нужно только пользователям ФНС).
Можно включить в Панели управления CSP:

Панель управления – КриптоПро CSP – Оборудование – Настроить считыватели – Считыватель смарт-карт PKCS#11 – Удалить – Добавить – Считыватель смарт-карт PKCS#11.

https://support.cryptopr…topro-ssp-50-r2-i-pkcs11

Есть такая же возможность для CSP 4.0?
На втором компьютере установлена 4 версия, что бы не переустанавливать на 5.0, так как лицензия на 5.0 только одна.


Offline

Grey

Оставлено
:

14 октября 2021 г. 11:32:22(UTC)

Автор: PavelNN Перейти к цитате

Есть такая же возможность для CSP 4.0?
На втором компьютере установлена 4 версия, что бы не переустанавливать на 5.0, так как лицензия на 5.0 только одна.

Поддержка неизвлекаемых ключей, создаваемых ФНС, появилась только в CSP 5.0 R2.

С уважением,
Сергей Агафьин,
Начальник отдела разработки ФКН.
Техническую поддержку оказываем здесь.
Наша база знаний.

thanks 1 пользователь поблагодарил Grey за этот пост.


Offline

evarlamov

Оставлено
:

9 августа 2021 г. 8:38:44(UTC)

Помогите справиться, что-то застрял.
При взаимодействии с тестовым контуром ФСС получаю ошибку:
Ошибка при проверки ЭЦП. Алгоритм ключа не соответствует алгоритму подписи

Инструменты: delphi, JwaWinCrypt

Формирую xml-запрос (PrParseFilelnlpu) и пытаюсь подписать его двумя подписями.
Первой подписываю элемент body. Для этого:
0) обращаюсь к контексту нужного криптопровайдера
1) канонизирую элемент,
2) создаю хэш CryptCreateHash(ACryptoProvider, CALG_GR3411_2012_256, 0, 0, hash)
3) добавляю данные из шага 1) в хеш
4) вычисляю данные по полученному хэшу (CryptHashData(hash, PByte(aByte), Length(aByte), 0))
5) конвертировав результат в строку, помещаю все в digestValue
6) повторяю шаги 1)-5) уже ля элемента SignedInfo и помещаю конвертированный в строку результат в SignatureValue

Второй пописью подписываю каждый элемент row в теле документа. Для этого делаю те же шаги, но обращаюсь к другому контейнеру.
Подпись (digestValue, SignatureValue) будет размещена в новой секции Security

– как выбираю нужный контейнер:
вызываю CryptAcquireContext(AProvider, <Имя нужного контейнера>, nil, 80, 0))
и использую AProvider

Подписанный файл не проходит проверку и здесь https://www.justsign.me/verifyqca/Verify/ – XML подпись не верна.
В чем может быть причина?
Приложу этот самый подписанный документ Криптопро и КриптоПро SOAPRequestSign.xml (15kb) загружен 6 раз(а).


Offline

two_oceans

Оставлено
:

11 августа 2021 г. 12:32:05(UTC)

Добрый день.
Дельфи в разделе .NET и даже не специфичный для ЭЛН вопрос по подписанию XML – просто чудом увидел. Ближе к теме:
1) похоже неправильно описали отличия на шаге 5: для SignedInfo – еще вызывается CryptSignHash именно его результат идет на переворот/отзеркаливание порядка байтов, потом конвертируется в base64 и сохраняется в SignatureValue, уничтожается вызовом CryptDestroyHash.

для подписываемого фрагмента – результат получается через GetHashParam(_,HP_HASHVAL,_), потом конвертируется в base64 и сохраняется в DigestValue, уничтожается вызовом CryptDestroyHash.

Примечание. В случае, когда хэш создается не для CryptSignHash, можно создать контекст криптопровайдера так: CryptAcquireContext(AProvider, nil, nil, 80, CRYPT_VERIFYCONTEXT) – исключает обращение к контейнеру, когда он реально не нужен. В данном случае, хэш от подписываемого фрагмента (DigestValue) не идет в CryptSignHash, то есть контейнер можно не тревожить. Аналогично при проверке DigestValue и SignatureValue.

Про переворот. В стандарте регламентирован порядок байт “старший байт по младшему адресу”, а КриптоПро CSP через функции GetHashParam(_,HP_HASHVAL,_) CryptSignHash возвращает в “младший байт по младшему адресу” (как принято для процессоров x86). С гост-2012 переворачивать хэш “внезапно” стало не нужно, но для значения подписи необходимость остается. Через другие средства (как .Net) необходимости может не быть – результат автоматически переворачивает прослойка между криптопровайдером и высокоуровневым интерфейсом.

Смотрим что у Вас на практике: по длине SignatureValue (в 2 раза длиннее, чем DigestValue) видно, что CryptSignHash вызывали – тут все правильно. Остается момент с “отзеркаливанием” порядка байтов.
Переворот у меня реализован упрощенно так (через 2 буфера, для отладки “до” и “после”):

2) если теги вложенные, то рекомендуется сначала подписывать самый “глубокий” – возможно случайное изменение xml кода в процессе подписания, особенно когда формируете xml вручную. Следовательно сначала подписываете Row, потом Body

3) Обратите внимание, что ds:CanonicalizationMethod Algorithm это алгоритм применяемый к SignedInfo, а ds:Transform Algorithm это алгоритм применяемый к подписываемому фрагменту. Как-то Вы замечательно каноникализируете все подряд, хотя в трансформах у подписи тега Row пусто, каноникализации нет. При проверке будут точно применены явно указанные трансформы, а вот отступления конкретной ИС от стандарта (когда трансформа никакого нет, а ИС все равно каноникализирует и считает верным) не пройдут проверку на общедоступном средстве проверки. Поэтому если каноникализируете и проверяете себя на сайте – добавьте трансформ, так Вы сообщите средству проверке о том, что делаете при подписании.

4) ds:Reference URI=”#ELN_1207700165023″ ведет в никуда – нет такого Id в документе, зато есть soapenv:Body wsu:Id=”OGRN_1207700165023″. Понимаю, запутались уже. Однако ряд средств проверки подписи выбирает пустую строку когда не находят Id (хэш уже будет совсем другой и выдаст ошибку), остальные сразу вываливаются в ошибку (не нашли фрагмент).

UPD: Результаты проверки в моей программе: подпись Row выдала ошибку SignatureValue (удаление табуляций и переводов строк не помогло). DigestValue тоже выдало ошибку обработки.
Вторая подпись прошла проверку SignatureValue после удаления табуляций и переводов строк. ds:Reference URI не нашелся. Так что да, подписи не верны.

Отредактировано пользователем 11 августа 2021 г. 13:12:38(UTC)
| Причина: Не указана

thanks 2 пользователей поблагодарили two_oceans за этот пост.


Offline

evarlamov

Оставлено
:

12 августа 2021 г. 12:01:24(UTC)

Добрый день.
Спасибо, помогло. Путаницу со ссылками Reference URI сам обнаружил, а вот за объяснение того, что не нужно канонализировать подписываемый элемент – еще раз спасибо.
Добился корректных подписей от сервиса https://www.justsign.me/verifyqca/Verify/

Но поменял подписываемые блоки, опять что-то сломалось. Одна из подписей стала некорректна.

Не подскажете, в чем может быть дело?
В приложенном примере подписью 1 подписан элемент treatPeriod, а подписью 2 – элемент row
Криптопро и КриптоПро SOAPRequestSign.xml (13kb) загружен 4 раз(а).


Offline

two_oceans

Оставлено
:

13 августа 2021 г. 5:45:14(UTC)

Результат проверки в моей программке:
1) подпись treatPeriod: SignatureValue верно, DigestValue верно = подпись верна
2) подпись row: SignatureValue верно, DigestValue отличается = подпись неверна

Код:

=== WARNING: digest differ:
[DgbbIIMj414dCRT09Ga8APCVWFFiGELqlouAaIT1OI4=] fact // вычислено фактически
[fFJW3cFMxSVUITu0SVJhq574r7gpuN9haMvXXJd0QXs=] expected // ожидалось, указано в Reference

В данном случае трансформ каноникализации указан в Reference, так что каконикализация применена при проверке. Текст, полученный для вычисления хэша (но могу и ошибаться в плане представления некоторых символов и порядка пространств имен, так как может быть у меня включено отступление от стандарта для СМЭВ):

Код:

<row xmlns="http://www.fss.ru/integration/types/eln/mo/v01" xmlns:NS2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" NS2:Id="ELN_900000585992"><unconditional>false</unconditional><snils>16585732610</snils><surname>Иванов</surname><name>Иван</name><patronymic>Иванович</patronymic><lnCode>900000585992</lnCode><primaryFlag>true</primaryFlag><duplicateFlag>false</duplicateFlag><lnDate>2021-08-11</lnDate><lpuName>ГБУЗ ЦРБ №1</lpuName><lpuAddress>Г.НИЖНИЙ НОВГОРОД, УЛ. ГОРЬКОГО 117</lpuAddress><lpuOgrn>1207700165023</lpuOgrn><birthday>2000-08-24</birthday><gender>1</gender><reason1>05</reason1><diagnos>0000000000</diagnos><date1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></date1><date2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></date2><mseDt1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></mseDt1><mseDt2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></mseDt2><mseDt3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></mseDt3><mseInvalidGroup>0</mseInvalidGroup><treatPeriods><treatFullPeriod><treatPeriod xmlns="http://www.fss.ru/integration/types/eln/v01" NS2:Id="ELN_900000585992_1_doc"><treatDt1>2021-08-12</treatDt1><treatDt2>2021-08-18</treatDt2><treatDoctorRole>ПЕДИАТР</treatDoctorRole><treatDoctor>ГАБЕЕВА ИЧ</treatDoctor></treatPeriod></treatFullPeriod></treatPeriods><lnState>020</lnState><writtenAgreementFlag>true</writtenAgreementFlag></row>

На всякий случай перепроверил, что данный текст сохраненный в файл в кодировке UTF8 без ByteOrderMark (длина 1585) дает вычисленный хэш.

Код:

0E06DB208323E35E1D0914F4F466BC00F0955851621842EA968B806884F5388E
DgbbIIMj414dCRT09Ga8APCVWFFiGELqlouAaIT1OI4=
FLIP RESULT:
8E38F58468808B96EA421862515895F000BC66F4F414091D5EE3238320DB060E
jjj1hGiAi5bqQhhiUViV8AC8ZvT0FAkdXuMjgyDbBg4=

Для гибкости, когда трансформ нужен, а когда нет, у меня при подписании сначала добавляются предполагаемые трансформы в референс. При подписании такая обработка референса:
1) содержимое референса (URI, Id, Type, список трансформов, алгоритм хэша) блокируется;
2) выполняется процедура как при проверке референса: выбирается фрагмент по URI, для каждого трансформа в референсе по общему списку алгоритмов ищется нужный и применяется к фрагменту, вычисляется хэш согласно алгоритму из референса (аналогично по общему списку алгоритмов ищется нужный алгоритм хэша и применяется);
3) вычисленное значение хэша заносится в референс.
Потом все референсы составляются в SignedInfo, который блокируется и к нему применяется CanonicalizationMethod, потом SignatureMethod, заносится SignatureValue.

При проверке референса:
1) считывается список трансформов, URI, Id, Type, алгоритм хэша и значение хэша.
2) выбирается фрагмент по URI, для каждого трансформа в референсе по общему списку алгоритмов ищется нужный и применяется к фрагменту, вычисляется хэш согласно алгоритму из референса (аналогично по общему списку алгоритмов ищется нужный алгоритм хэша и применяется);
3) вычисленное значение хэша сравнивается со считанным значением.

Отредактировано пользователем 13 августа 2021 г. 7:12:02(UTC)
| Причина: Не указана


Offline

evarlamov

Оставлено
:

16 августа 2021 г. 11:03:03(UTC)

Спасибо.
Постараюсь повторить вашу схему.
Обнаружил, что если в документе встречается строка типа <date1 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:nil=”true”/>
то подпись становится некорректной. (даже если этот namespace прописать где-то в родительских элементах)
Это как-то можно объяснить? Т.е. есть два документа, подписываемые по одной схеме, отличаются лишь на одну строку. Но один проходит проверку, второй – нет
Криптопро и КриптоПро SOAPRequestSign0.xml (13kb) загружен 8 раз(а).
Криптопро и КриптоПро SOAPRequestSign1.xml (13kb) загружен 4 раз(а).


Offline

Рафик

Оставлено
:

17 октября 2021 г. 2:16:44(UTC)

Может кто подскажет, делаю метод prParseFilelnlpuRequest
Подписываю файл все согласно алгоритмов
почему то выдает подпись не действительная при чем обе, уже не знаю где искать проблему

прикладываю файлик

Подпись 1
Результат проверки
Подпись не действительна

Криптопро и КриптоПро SOAPRequestSign.xml (13kb) загружен 2 раз(а).


Offline

Рафик

Оставлено
:

17 октября 2021 г. 20:10:36(UTC)

Автор: Рафик Перейти к цитате

Может кто подскажет, делаю метод prParseFilelnlpuRequest
Подписываю файл все согласно алгоритмов
почему то выдает подпись не действительная при чем обе, уже не знаю где искать проблему

прикладываю файлик

Подпись 1
Результат проверки
Подпись не действительна

Криптопро и КриптоПро SOAPRequestSign.xml (13kb) загружен 2 раз(а).

Разобрался, неправильно канонизировал файл

Форум КриптоПро
»
Средства криптографической защиты информации
»
Linux, Solaris etc.
»
Arch Linux. КриптоПро 5.0 + Рутокен ЭЦП 2.0 + IFCPlugin ГосУслуги + КЭП ФНС


Offline

BredoGen

Оставлено
:

26 января 2022 г. 15:19:08(UTC)

Пришло время получать КЭП для ИП в ФНС. Приобрел Рутокен ЭЦП 2.0 (как оказалось зря, СКЗИ внутри него использоваться не будет, ФНС всё равно запишет контейнер в формате криптопро).

Пришло время запустить всё на Arch Linux с возможностью входа на ГосУслуги.
Провозился целый вечер, оказалось следовал старой инструкции, по которой связка не работает.

Актуальные шаги:

CryptoPro 5.0

1. Ставим КриптоПро 5.0 из AUR: https://aur.archlinux.or…ckages/cryptopro-csp-k1/

2. Скачиваем архив AUR
3. Рядом с PKGBUILD подкладываем скачанные из кабинета КриптоПро архивы. На текущую дату актуальные ссылки для скачивания: КриптоПро, cades_linux_amd64.tar.gz (возможно придётся переименовать файл, приведя к такому названию).

4. Ставим:

5. В хромиум ставим расширение CryptoPro Extension for CAdES Browser Plug-in.

6. Открываем гуй CryptoPro Tools (/opt/cprocsp/bin/amd64/cptools), удостоверяемся, что криптопро видит наш Рутокен и контейнер в нём.
7. Нажимаем на “Check container” и убеждаемся, что алгоритм у нас именно 2012: “ГОСТ Р 34.10-2012 256 бит”.
8. Запускаем

Код:

/opt/cprocsp/bin/amd64/csptestf -absorb -certs -autoprov

Убеждаемся, что в CryptoPro Tools разделе сертификатов наш сертификат установился в раздел персональных.

9. Идём на демо страницу и проверяем, что страница видит наш сертификат и подпись работает.

Неcмотря на инструкции в интернете, файл config64.ini не трогаем, раздел PKCS11 не редактируем. Это была моя основная ошибка, я пробовал его редактировать и править под 2012 алгоритм. Трогать не нужно вообще.

Всё, подписывать можем, теперь нужно разобраться с ГосУслугами.

ГосУслуги (IFCPlugin)

1. Ставим из AUR: https://aur.archlinux.org/packages/ifcplugin/
2. Ставим расширение
3. Редактируем /etc/ifc.cfg

Версия при которой в списке сертификатов будет показан только 1 наш сертификат ИП (без дублей и лишних сертификатов):

Код:


log = {
   level = "DEBUG";
}

config = {
    cert_from_registry = "false";
    set_user_pin = "false";
}

params =
(

    {   name = "CPPKCS11_2012_256";
        alias = "CPPKCS11_2012_256";
        type = "pkcs11";
        alg = "gost2012_256";
        model = "CPPKCS 3";
        lib_linux = "libcppkcs11.so";
    }
);

Другие версии для других алгоритмов можно взять например тут.

4. Перезапускаем хромимум.

5. Идём на https://esia.gosuslugi.ru/login/ и пробуем логиниться.

P.S. Удивительным для меня остаётся тот факт, что ФНС принудительно записывает криптопро контейнеры, при этом отсутствует опция логина в кабинет ИП nalog.ru. Есть там только опция Рутокен ЭЦП 2.0 (которая не работает из-за формата контейнера) или возня с сертификатами и хромиум-гос.


Offline

Санчир Момолдаев

Оставлено
:

26 января 2022 г. 20:30:11(UTC)

Добрый день!
как я понял вы написали how-to? или у вас остался какой-то вопрос?


Offline

BredoGen

Оставлено
:

26 января 2022 г. 21:47:33(UTC)

Автор: Санчир Момолдаев Перейти к цитате

Добрый день!
как я понял вы написали how-to? или у вас остался какой-то вопрос?

Да, это how-to для тех, кто будет искать процесс установки на Arch.


Offline

Gigses

Оставлено
:

31 января 2022 г. 16:41:02(UTC)

Автор: BredoGen Перейти к цитате

6. Открываем гуй CryptoPro Tools (/opt/cprocsp/bin/amd64/cptools), удостоверяемся, что криптопро видит наш Рутокен

На этом шаге рутокен на виден. Систему перезагружал. Рутокен проверен на другой машине и под другой ОС. Как заставить программу видеть рутокен?
Свойства системы – под спойлером:

Отредактировано пользователем 31 января 2022 г. 16:41:44(UTC)
| Причина: Не указана


Offline

Андрей Русев

Оставлено
:

31 января 2022 г. 21:09:15(UTC)

thanks 1 пользователь поблагодарил Андрей Русев за этот пост.

Gigses

оставлено 01.02.2022(UTC)


Offline

Gigses

Оставлено
:

1 февраля 2022 г. 8:34:11(UTC)

При подключении носителя, команда “pcscd -f -d” пишет это:

Код:

08451508 [139815546779200] hotplug_libudev.c:667:HPEstablishUSBNotifications() USB Device add
00000630 [139815546779200] hotplug_libudev.c:300:get_driver() Looking for a driver for VID: 0x0A89, PID: 0x0025, path: /dev/bus/usb/001/008
00000049 [139815546779200] hotplug_libudev.c:441:HPAddDevice() Adding USB device: Aktiv Rutoken lite - CP
00000167 [139815546779200] readerfactory.c:1097:RFInitializeReader() Attempting startup of Aktiv Rutoken lite - CP 00 00 using /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Linux/libacsccid.so
00000847 [139815546779200] readerfactory.c:972:RFBindFunctions() Loading IFD Handler 3.0
00000086 [139815546779200] ifdhandler.c:2960:init_driver() Driver version: 1.1.8
00000829 [139815546779200] ifdhandler.c:2977:init_driver() LogLevel: 0x0003
00000029 [139815546779200] ifdhandler.c:2988:init_driver() DriverOptions: 0x0000
00000025 [139815546779200] ifdhandler.c:2996:init_driver() ACSDriverOptions: 0x0003
00000021 [139815546779200] ifdhandler.c:3004:init_driver() ACR38CardVoltage: 0
00000019 [139815546779200] ifdhandler.c:3012:init_driver() ACR38CardType: 0
00000140 [139815546779200] ifdhandler.c:162:CreateChannelByNameOrChannel() Lun: 0, device: usb:0a89/0025:libudev:0:/dev/bus/usb/001/008
00000029 [139815546779200] ccid_usb.c:329:OpenUSBByName() Using: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
00000736 [139815546779200] ccid_usb.c:347:OpenUSBByName() ifdManufacturerString: Advanced Card Systems Ltd.
00000022 [139815546779200] ccid_usb.c:348:OpenUSBByName() ifdProductString: ACS CCID driver
00000027 [139815546779200] ccid_usb.c:349:OpenUSBByName() Copyright: This driver is protected by terms of the GNU Lesser General Public License version 2.1, or (at your option) any later version.
00009758 [139815546779200] ccid_usb.c:753:OpenUSBByName() Found Vendor/Product: 0A89/0025 (Aktiv Rutoken lite - CP)
00000020 [139815546779200] ccid_usb.c:755:OpenUSBByName() Using USB bus/device: 1/8
00000010 [139815546779200] ccid_usb.c:934:OpenUSBByName() bNumDataRatesSupported is 0
00000736 [139815546779200] ifdhandler.c:333:CreateChannelByNameOrChannel() dwFeatures: 0x00020840
00000016 [139815546779200] ifdhandler.c:334:CreateChannelByNameOrChannel() wLcdLayout: 0x0000
00000009 [139815546779200] ifdhandler.c:335:CreateChannelByNameOrChannel() bPINSupport: 0x00
00000008 [139815546779200] ifdhandler.c:336:CreateChannelByNameOrChannel() dwMaxCCIDMessageLength: 271
00000007 [139815546779200] ifdhandler.c:337:CreateChannelByNameOrChannel() dwMaxIFSD: 254
00000004 [139815546779200] ifdhandler.c:338:CreateChannelByNameOrChannel() dwDefaultClock: 3580
00000005 [139815546779200] ifdhandler.c:339:CreateChannelByNameOrChannel() dwMaxDataRate: 9600
00000006 [139815546779200] ifdhandler.c:340:CreateChannelByNameOrChannel() bMaxSlotIndex: 0
00000007 [139815546779200] ifdhandler.c:341:CreateChannelByNameOrChannel() bCurrentSlotIndex: 0
00000006 [139815546779200] ifdhandler.c:342:CreateChannelByNameOrChannel() bInterfaceProtocol: 0x00
00000006 [139815546779200] ifdhandler.c:343:CreateChannelByNameOrChannel() bNumEndpoints: 2
00000008 [139815546779200] ifdhandler.c:344:CreateChannelByNameOrChannel() bVoltageSupport: 0x01
00000009 [139815546779200] ifdhandler.c:517:IFDHGetCapabilities() tag: 0xFB3, usb:0a89/0025:libudev:0:/dev/bus/usb/001/008 (lun: 0)
00000007 [139815546779200] readerfactory.c:395:RFAddReader() Using the pcscd polling thread
00000321 [139815546779200] ifdhandler.c:517:IFDHGetCapabilities() tag: 0xFAE, usb:0a89/0025:libudev:0:/dev/bus/usb/001/008 (lun: 0)
00000014 [139815546779200] ifdhandler.c:621:IFDHGetCapabilities() Reader supports 1 slot(s)
00000620 [139815625848384] ifdhandler.c:1407:IFDHPowerICC() action: PowerUp, usb:0a89/0025:libudev:0:/dev/bus/usb/001/008 (lun: 0)
00000386 [139815625848384] eventhandler.c:289:EHStatusHandlerThread() powerState: POWER_STATE_POWERED
00000012 [139815625848384] Card ATR: 3B 8B 01 52 75 74 6F 6B 65 6E 6C 69 74 65 C2 
00401093 [139815625848384] ifdhandler.c:1407:IFDHPowerICC() action: PowerDown, usb:0a89/0025:libudev:0:/dev/bus/usb/001/008 (lun: 0)
00000531 [139815625848384] eventhandler.c:482:EHStatusHandlerThread() powerState: POWER_STATE_UNPOWERED

Код:

lsusb
...
Bus 001 Device 008: ID 0a89:0025 Aktiv Rutoken lite
...

Код:

# /opt/cprocsp/bin/amd64/csptest -card -enum -v -v  
Aktiv Rutoken lite - CP 00 00
  Card present, ATR=3B 8B 01 52 75 74 6F 6B 65 6E 6C 69 74 65 C2 
  Unknown applet
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,000 sec
[ErrorCode: 0x00000000]

Код:

# /opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS -flags 32
../../../../CSPbuild/CSP/samples/support/cplevel.c:418:Cannot find default provider.

Error 0x80090017: Тип поставщика не определен. 
../../../../CSPbuild/CSP/samples/support/getcspparam.c:28:Can not get CSP param: AcquireContext failed.
Error 0x80090017: Тип поставщика не определен. 
../../../../CSPbuild/CSP/samples/csptest/enum.c:420:Error during CryptAcquireContext.

Error 0x80090017: Тип поставщика не определен. 
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,000 sec
[ErrorCode: 0x80090017]

Что сделать, чтобы программа увидела рутокен?

Отредактировано пользователем 1 февраля 2022 г. 11:35:38(UTC)
| Причина: изменение вывода команды просле запуска сервиса pcscd


Offline

Андрей Русев

Оставлено
:

1 февраля 2022 г. 12:32:46(UTC)

У вас проблема не с токеном, а с установкой КриптоПро CSP. Сходу ошибку в https://aur.archlinux.or…stall?h=cryptopro-csp-k1 не увидел, но проблема, вероятно, где-то там. Пришлите в личку диагностический архив, собранный с помощью

Код:

curl https://cryptopro.ru/sites/default/files/products/csp/cprodiag 2>/dev/null|sudo perl

Отредактировано пользователем 1 февраля 2022 г. 12:46:47(UTC)
| Причина: Не указана


Offline

Андрей Русев

Оставлено
:

1 февраля 2022 г. 13:39:12(UTC)


Offline

Gigses

Оставлено
:

1 февраля 2022 г. 13:46:59(UTC)

В этих секциях пусто. Лишь комментарии:

Код:

[Defaults\Provider]
# Провайдеры. Описание провайдера должно содержать поля:
# "Image Path" = путь до разделяемой библиотеки провайдера
# "Type"= тип провайдера (71, 75)

[Defaults\"Provider Types"]
# Типы провайдеров. Описание типа провайдера должно содержать поля:
# "Name"= имя провайдера по умолчанию для данного типа

Каким образом заполнить эти секции?


Offline

Андрей Русев

Оставлено
:

1 февраля 2022 г. 13:58:59(UTC)


Offline

Gigses

Оставлено
:

1 февраля 2022 г. 14:03:31(UTC)

Ставил по мануалу из первого сообщения этой темы. А есть ли какое-то официальное руководство по установке КриптоПро на Linux?


Offline

Андрей Русев

Оставлено
:

1 февраля 2022 г. 14:12:05(UTC)


Offline

Gigses

Оставлено
:

1 февраля 2022 г. 16:43:07(UTC)

Удалил всё, переустановил заново. Всё работает.
Спасибо.


Offline

Андрей Русев

Оставлено
:

1 февраля 2022 г. 22:49:00(UTC)

Насколько я понимаю, в PKGBUILD cryptopro-csp-k1.install не хватает post_upgrade(), выполняющей то же, что и в post_install(). Накатал патч в AUR. Ничего не проверял, так как Arch-а у нас нет.


Offline

Андрей Русев

Оставлено
:

3 февраля 2022 г. 14:47:44(UTC)

Патч приняли, теперь надо, чтобы кто-нибудь проверил на своём Arch-е, что больше проблемы при Upgrade нет.


Offline

Санчир Момолдаев

Оставлено
:

4 февраля 2022 г. 17:08:56(UTC)

проверил. проблем при upgrade нет

Пример установки отдельно взятого сертификата из контейнера

При необходимости скопируйте ключевой контейнер \\.\FLASH\.\sidorov на жесткий диск:

/opt/cprocsp/bin/amd64/csptest -keycopy -contsrc '\\.\FLASH\sidorov' -contdest '\\.\HDIMAGE\sidor'CSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 38556259
CryptAcquireContext succeeded.HCRYPTPROV: 38770755
Total: SYS: 0,000 sec USR: 0,100 sec UTC: 14,920 sec
[ErrorCode: 0x00000000]

Наличие [ErrorCode: 0x00000000] в завершении каждой команды КриптоПРО говорит о ее успешном выполнении.

Проверьте наличие нового контейнера \\.\HDIMAGE\sidor:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifycCSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 34554467
\\.\FLASH\ivanov
\\.\FLASH\petrov
\\.\FLASH\sidorov
\\.\FLASH\vasiliev
\\.\FLASH\smirnov
\\.\HDIMAGE\sidor
OK.
Total: SYS: 0,010 sec USR: 0,050 sec UTC: 0,130 sec
[ErrorCode: 0x00000000]

Установите личный сертификат:

/opt/cprocsp/bin/amd64/certmgr -inst -cont '\.HDIMAGEsidor'Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
Install:
=============================================================================
1-------
Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Subject             : SNILS=12345678901, OGRN=1234567890123, INN=0011234567890, E=sidorov@mail.ru, C=RU, S=10 Республика Карелия, L=Петрозаводск, O=ООО Ромашка, CN=Сидоров Николай Павлович, T=Администратор, G=Николай Павлович, SN=Сидоров
Serial              : 0x12C40953000000000019
SHA1 Hash           : 0xdd0ea8db46a372571c55315cd7e4d8e2de8fb9b6
SubjKeyID           : 5fc37e578cce0abe739c4da227f68a2f9abcb128
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 09/08/2016  06:07:00 UTC
Not valid after     : 09/11/2017  06:17:00 UTC
PrivateKey Link     : No
CA cert URL         : <mark>http://cert1.ucestp.ru/estp.crt</mark>
Extended Key Usage  : 1.3.6.1.5.5.7.3.4
1.3.6.1.5.5.7.3.2
=============================================================================
[ErrorCode: 0x00000000]

Скачайте корневой сертификат по ссылке выше (из поля CA cert URL): http://cert1.ucestp.ru/estp.crt и перенесите его, например, в домашнюю папку:

cp ~/Загрузки/estp.crt ~/estp.crt

Установите корневой сертификат (возможно потребуются права суперпользователя):

/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ~/estp.crtCertmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
Install:
=============================================================================
1-------
Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Subject             : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Serial              : 0x50D7BC0E4A3EC9994454EB83013EE5F5
SHA1 Hash           : 0xd2144a3e098b6f2decb224257f48e2b7c6d85209
SubjKeyID           : 07b753cd561dee8e5e83407be4575ecc05bfec14
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 17/06/2016  13:15:21 UTC
Not valid after     : 17/06/2021  13:25:01 UTC
PrivateKey Link     : No
=============================================================================
[ErrorCode: 0x00000000]

Проверьте установку личного сертификата:

/opt/cprocsp/bin/amd64/certmgr -list -store uMyCertmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
=============================================================================
1-------
Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Subject             : SNILS=12345678901, OGRN=1234567890123, INN=0011234567890, E=sidorov@mail.ru, C=RU, S=10 Республика Карелия, L=Петрозаводск, O=ООО Ромашка, CN=Сидоров Николай Павлович, T=Администратор, G=Николай Павлович, SN=Сидоров
Serial              : 0x12C40953000000000019
SHA1 Hash           : 0xdd0ea8db46a372571c55315cd7e4d8e2de8fb9b6
SubjKeyID           : 5fc37e578cce0abe739c4da227f68a2f9abcb128
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 09/08/2016  06:07:00 UTC
Not valid after     : 09/11/2017  06:17:00 UTC
PrivateKey Link     : Yes
Container           : HDIMAGE\\sidor.000B01
Provider Name       : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info       : ProvType: 80, KeySpec: 1, Flags: 0x0
CA cert URL         : http://cert1.ucestp.ru/estp.crt
Extended Key Usage  : 1.3.6.1.5.5.7.3.4
1.3.6.1.5.5.7.3.2
=============================================================================
[ErrorCode: 0x00000000]

Установка сертификатов используя КриптоПРО в Linux

Описание процесса установки приведено на примере дистрибутива семейства Debian (x64).Названия файлов и директорий могут варьироваться от системы к системе.

При установке личных сертификатов не нужны права суперпользователя, и наоборот, при установке сертификатов УЦ(корневых и промежуточных) могут потребоваться такие права.

Подключите USB носитель с ключевыми контейнерами и проверьте результат команды:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifycCSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 16188003
\\.\FLASH\ivanov
\\.\FLASH\petrov
\\.\FLASH\sidorov
\\.\FLASH\vasiliev
\\.\FLASH\smirnov
OK.
Total: SYS: 0,020 sec USR: 0,060 sec UTC: 0,180 sec

Можно сразу установить личные сертификатов из всех доступных контейнеров одной командой:/opt/cprocsp/bin/amd64/csptestf -absorb -certsПроизойдет установка сертификатов, находящихся во всех доступных в момент запуска команды контейнерах (съемных флэш-носителях, жесткого диска и т. д.) в хранилище uMy.

Читайте также:  Как перенести эцп с компьютера на флешку: как скачать эцп с флешки на компьютер
Оцените статью
ЭЦП Эксперт
Добавить комментарий

Adblock
detector