Использование SSL-сертификата клиента с IXMLHTTPRequest3

я использую IXMLHTTPRequest3 из кода C ++ для выдачи запроса в службу. Этот запрос должен сопровождаться клиентским сертификатом (это почти единственное, что IXHR3 добавляет поверх IXHR2).

Отпечаток сертификата 8D1CC03002D7872230516B5C5BA1090084D68ED0, и я убедился, что он установлен на компьютере:

PS> dir cert:\*\*\* | ? { $_.Thumbprint -eq "8D1CC03002D7872230516B5C5BA1090084D68ED0" }

Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My

Thumbprint                                Subject
----------                                -------
8D1CC03002D7872230516B5C5BA1090084D68ED0  DC=..., O=..., OU=...

Однако, когда я пытаюсь передать этот отпечаток IXHR3->SetClientCertificateЯ вернусь 0x80092004, CRYPT_E_NOT_FOUND,

Я преобразовал хеш из шестнадцатеричной строки в 20-байтовый массив (благодаря автоматизации, чтобы избежать ошибок транспонирования на моем конце), и мой вызов выглядит так:

uint8_t thumbprint[20] = { 0x8d, 0x1c, 0xc0, 0x30, ... };
hr = request->SetClientCertificate(ARRAYSIZE(thumbprint), thumbprint, nullptr);

Ясно вопрос: почему IXHR3 не может найти мой сертификат клиента?

0

Решение

IXHR3 ищет только сертификаты в CERT_STORE_PROV_SYSTEM -> CERT_SYSTEM_STORE_CURRENT_USERи мой был в CERT_SYSTEM_STORE_LOCAL_MACHINE вместо.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector