Статус: Участник
Группы: Участники
Зарегистрирован: 19.06.2015(UTC) Сообщений: 12 Откуда: Moscow Сказал(а) «Спасибо»: 4 раз
|
Коллеги, доброго времени суток. На промышленном сервере возникла проблема с функцией "CadesSignMessage" - она "зависает" ровно на 10 минут, потом возникает ошибка 0x8010006E. Вот кусок лога программы, вызывающей эту функцию: Код:2019-02-19 01:18:58.118450 rcpd: >>> CadesSignMessage (2)
2019-02-19 01:28:58.276841 error
EDS: CadesSignMessage.
Code: 0x8010006E
2019-02-19 01:28:58.277282 <<< CadesSignMessage error!!! (2)
На сервере установлены сертификаты по ГОСТ 2001. После обновления с версии 3.9 до 4.0 они не переустанавливались, контейнера закрытых ключей также не изменялись. Сертификат выглядит так: Код:3-------
Issuer : OGRN=1037700085444, INN=007717107991, STREET=ул. Сущёвский вал д. 18, E=qca@cryptopro.ru, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN="ООО ""КРИПТО-ПРО"""
Subject : OGRN=1027700462514, INN=007702263726, STREET="ХХХХХХХ", E=info@vtbins.ru, C=RU, S=77 г. Москва, L=Москва, O="ХХХХХХХ", CN="ХХХХХХХ"
Serial : 0x04DC104EE49490E380E71192B53BB735F8
SHA1 Hash : dba61fa8672cc86fa84a82b7e187fb6006b83bef
SubjKeyID : e8f105c25753352d5b55d2c73d23fd9c4a1ab952
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 20/10/2017 12:24:10 UTC
Not valid after : 20/10/2018 12:34:10 UTC
PrivateKey Link : Yes
Container : HDIMAGE\\MMCnew20.000\0D48
Provider Name : Crypto-Pro GOST R 34.10-2001 KC1 CSP
Provider Info : ProvType: 75, KeySpec: 1, Flags: 0x0
OCSP URL : http://qs.cryptopro.ru/ocspq2/ocsp.srf
CA cert URL : http://cdp.cryptopro.ru/ra/aia/2921f219d74584c6a974e64ec5145890683108ca.crt
CA cert URL : http://q20.cryptopro.ru/aia/2921f219d74584c6a974e64ec5145890683108ca.crt
CDP : http://cdp.cryptopro.ru/ra/cdp/2921f219d74584c6a974e64ec5145890683108ca.crl
CDP : http://q20.cryptopro.ru/cdp/2921f219d74584c6a974e64ec5145890683108ca.crl
Extended Key Usage : 1.3.6.1.5.5.7.3.1
=============================================================================
На тестовом сервере такой проблемы не возникло, но там установлен тестовый сертификат по ГОСТ 2012 Ещё есть разница с тестовым сервером в том, что на нём установлен пакет lsb-cprocsp-devel-4.0.9921-5.noarch.rpm, но на промышленном сервере вместо него в архиве "cades_linux_amd64.tar.gz" есть пакет " cprocsp-pki-2.0.0-amd64-sapssf.rpm" Вот код вызова этой функции: Код:
// пробовал так - не помогает:
//signPara.HashAlgorithm.pszObjId = (char*)szOID_CP_GOST_R3411;
signPara.HashAlgorithm.pszObjId = "1.2.643.2.2.9"; // ГОСТ 2001
//signPara.HashAlgorithm.pszObjId = "1.2.643.7.1.1.2.2"; // ГОСТ 2012 256
//signPara.HashAlgorithm.pszObjId = "1.2.643.7.1.1.2.3"; // ГОСТ 2012 512
signPara.cMsgCert = 1;
signPara.rgpMsgCert = &pCertContext;
CADES_SIGN_PARA cadesSignPara;
memset(&cadesSignPara, 0, sizeof(CADES_SIGN_PARA));
cadesSignPara.dwSize = sizeof(CADES_SIGN_PARA);
cadesSignPara.dwCadesType = CADES_BES;
CADES_SIGN_MESSAGE_PARA para;
memset(¶, 0, sizeof(CADES_SIGN_MESSAGE_PARA));
para.dwSize = sizeof(CADES_SIGN_MESSAGE_PARA);
para.pSignMessagePara = &signPara;
para.pCadesSignPara = &cadesSignPara;
PCRYPT_DATA_BLOB pSignedMessage = 0;
char buf1[128];
sprintf(buf1, "%s (%d)", "rcpd: >>> CadesSignMessage", socket);
putLog(buf1);
if(!CadesSignMessage(¶,
TRUE, // detached
1,
(const BYTE**)&request->data,
(DWORD*)&request->dataSize,
&pSignedMessage))
{
HandleErrorWin((char*)"EDS: CadesSignMessage.", buf, bufSize);
CryptReleaseContext((HCRYPTPROV)pCertContext, 0);
CertCloseStore(hCertStore, CERT_CLOSE_STORE_FORCE_FLAG);
sprintf(buf1, "%s (%d)", "<<< CadesSignMessage error!!!", socket);
putLog(buf1);
return;
}
sprintf(buf1, "%s (%d)", "<<< CadesSignMessage success", socket);
putLog(buf1);
Подскажите, куда копать?
|