Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.07.2014(UTC) Сообщений: 84  Откуда: Тольятти Сказал(а) «Спасибо»: 1 раз
|
Добрый день.
Пытаюсь клиентом на iOS подключиться к серверу посредством stunnel. В логе следующее: 2014.11.20 12:17:43 LOG3[1294:116228096]: Error 0x20 ((unknown)) returned by CertVerifyCertificateChainPolicy! 2014.11.20 12:17:43 LOG3[1294:116228096]: Error 0x20 when validate certificate 2014.11.20 12:17:43 LOG3[1294:116228096]: Error 0x80092004 returned by VeryfySertChain 2014.11.20 12:17:43 LOG3[1294:116228096]: **** Erro
Полагаю не может подтвердить валидность, а именно нет корневого сертификата.
Корневой сертификат импортирую следующим образом, при этом Import succeeded происходит: void CertImport(BYTE *pfx, DWORD pfxlen) { HCERTSTORE rootStore = 0; CRYPT_DATA_BLOB blob; blob.cbData = pfxlen; blob.pbData = (BYTE*)pfx; PCCERT_CONTEXT pctx; pctx = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,blob.pbData,blob.cbData); static HCRYPTPROV hCryptProv = 0; // дескриптор CSP if(!CryptAcquireContext(&hCryptProv,0,NULL,PROV_GOST_2001_DH,CRYPT_VERIFYCONTEXT)) { HandleError("Cryptographic context could not be acquired."); } rootStore = CertOpenSystemStore(hCryptProv, "ROOT");
if (CertAddCertificateContextToStore(rootStore, pctx, CERT_STORE_ADD_NEW, 0)) { wprintf(L"Import succeeded.\n"); } }
Не верно вызываю хранилище?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.07.2014(UTC) Сообщений: 84  Откуда: Тольятти Сказал(а) «Спасибо»: 1 раз
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,405  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 720 раз в 624 постах
|
С корневым должно быть все нормально - цепочка строится выше по коду. |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,405  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 720 раз в 624 постах
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.07.2014(UTC) Сообщений: 84  Откуда: Тольятти Сказал(а) «Спасибо»: 1 раз
|
В моем случае нет аутентификации пользователя, необходимо только подтверждение сервера.
Мне важно верно ли Я обращаюсь rootStore = CertOpenSystemStore(hCryptProv, "ROOT"); чтобы положить туда корневой сертификат?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,405  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 720 раз в 624 постах
|
да, но может быть нюанс с кодировокой. попробуйте функцию certopenstore. имя должно быть в юникоде |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.07.2014(UTC) Сообщений: 84  Откуда: Тольятти Сказал(а) «Спасибо»: 1 раз
|
К сожалению и с юникодом тоже сообщает об успешном импортировании, но stunnel выдает все ту же ошибку.
rootStore = CertOpenStore( CERT_STORE_PROV_SYSTEM, 0, hCryptProv, CERT_SYSTEM_STORE_LOCAL_MACHINE, L"Root");
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,405  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 720 раз в 624 постах
|
Попробуйте вызывать те же функции: CertGetCertificateChain и CertVerifyCertificateChainPolicy CERT_CHAIN_POLICY_SSL |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close