WinInet и HTTPS
От: tapatoon  
Дата: 25.02.09 10:40
Оценка:
всем привет.

соединяюсь я значит с https через wininet и вдруг такая проблема
hUrl = InternetOpenUrl(hInet, url, NULL, 0, INTERNET_FLAG_SECURE
    | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | INTERNET_FLAG_IGNORE_CERT_CN_INVALID, 0);

в итоге: hUrl — NULL и GetLastError() — ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED (12044)

погуглил и самое толковое что нашёл это вот — http://support.microsoft.com/kb/224282 и конкретно оттуда

Internet Explorer 5.5 has a new option that allows you to select client certificate programmatically, INTERNET_OPTION_CLIENT_CERT_CONTEXT. When you use this option with InternetSetOption, (LPVOID) lpBuffer parameter should point to CERT_CONTEXT structure.

You can obtain CERT_CONTEXT structure by using Win32 Crypto APIs, such as CertEnumCertificatesInStore() or CertFindCertificateInStore().


вопрос такой — как мне найти требуемый сертикат через CertEnumCertificatesInStore? диалог я показать не могу, ибо сервис. и вообще с чего мне понадобился сертификат? IE при заходе на страницу никаких сертикатов не спрашивает, написал тестовый код на c# — тоже никакой сертикат там не указывал...
ServicePointManager.ServerCertificateValidationCallback =
        new RemoteCertificateValidationCallback(rcvc);

WebClient wc = new WebClient();
byte[] data = wc.DownloadData("https://...");


в общем помогите плз по правильному сделать
Центр ИПсО Сил Специальных Операций
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.