WinInet & Сертифекаты HTTPS
От: swap Россия  
Дата: 20.04.03 16:02
Оценка:
При заходе на оди HTTPS ресурс IE выдает сообщение системы безопастности "Сертефикат выдан организацией не входящей в состав доверенных...." и предлагает грузить/не грузить страницу. Когда я gsnf.cm dsgjkybnm pfghjc через WinInet тому же серверу, мне выдается сообщение "Ошибочная авторизация сертефиката". Вопрос как обойти этот чертов сертефика и выполнить запрос?

Запрос делаю так:

DWORD iflags=INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD;
CHttpFile* pFile=NULL;
CHttpConnection* pConnection=NULL;

CString strHeaders =_T("Content-Type: application/x-www-form-urlencoded");
CString strFormAction=_T("/cgi-bin/cgi.exe?");
CString strFormData = _T("function=db_login&Operator=1111&Password=3412&Lang=2");

   CInternetSession session;
 try{
   pConnection=session.GetHttpConnection(_T("someurl.ru"),0,INTERNET_DEFAULT_HTTPS_PORT,NULL,NULL);


   pFile =pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,strFormAction,NULL,1,NULL
                        ,NULL,iflags
                        |SECURITY_INTERNET_MASK
                        |INTERNET_FLAG_SECURE
                        );

 BOOL result = pFile->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
Re: WinInet & Сертифекаты HTTPS
От: Аноним  
Дата: 21.04.03 04:40
Оценка:
Здравствуйте, swap, Вы писали:

S>При заходе на оди HTTPS ресурс IE выдает сообщение системы безопастности "Сертефикат выдан организацией не входящей в состав доверенных...." и предлагает грузить/не грузить страницу. Когда я gsnf.cm dsgjkybnm pfghjc через WinInet тому же серверу, мне выдается сообщение "Ошибочная авторизация сертефиката". Вопрос как обойти этот чертов сертефика и выполнить запрос?


S>Запрос делаю так:


S>
S>DWORD iflags=INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD;
S>CHttpFile* pFile=NULL;
S>CHttpConnection* pConnection=NULL;

S>CString strHeaders =_T("Content-Type: application/x-www-form-urlencoded");
S>CString strFormAction=_T("/cgi-bin/cgi.exe?");
S>CString strFormData = _T("function=db_login&Operator=1111&Password=3412&Lang=2");

S>   CInternetSession session;
S> try{
S>   pConnection=session.GetHttpConnection(_T("someurl.ru"),0,INTERNET_DEFAULT_HTTPS_PORT,NULL,NULL);


S>   pFile =pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,strFormAction,NULL,1,NULL
S>                        ,NULL,iflags
S>                        |SECURITY_INTERNET_MASK
S>                        |INTERNET_FLAG_SECURE
S>                        );

S> BOOL result = pFile->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength()); 

S>

Попробуй использовать флаги INTERNET_FLAG_IGNORE_CERT_CN_INVALID и INTERNET_FLAG_IGNORE_CERT_DATE_INVALID в вызове OpenRequest.
Re[2]: WinInet & Сертифекаты HTTPS
От: swap Россия  
Дата: 21.04.03 08:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, swap, Вы писали:


S>При заходе на оди HTTPS ресурс IE выдает сообщение системы безопастности "Сертефикат выдан организацией не входящей в состав доверенных...." и предлагает грузить/не грузить страницу. Когда я gsnf.cm dsgjkybnm pfghjc через WinInet тому же серверу, мне выдается сообщение "Ошибочная авторизация сертефиката". Вопрос как обойти этот чертов сертефика и выполнить запрос?


S>Запрос делаю так:


S>
S>DWORD iflags=INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD;
S>CHttpFile* pFile=NULL;
S>CHttpConnection* pConnection=NULL;

S>CString strHeaders =_T("Content-Type: application/x-www-form-urlencoded");
S>CString strFormAction=_T("/cgi-bin/cgi.exe?");
S>CString strFormData = _T("function=db_login&Operator=1111&Password=3412&Lang=2");

S>   CInternetSession session;
S> try{
S>   pConnection=session.GetHttpConnection(_T("someurl.ru"),0,INTERNET_DEFAULT_HTTPS_PORT,NULL,NULL);


S>   pFile =pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,strFormAction,NULL,1,NULL
S>                        ,NULL,iflags
S>                        |SECURITY_INTERNET_MASK
S>                        |INTERNET_FLAG_SECURE
S>                        );

S> BOOL result = pFile->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength()); 

S>

А>Попробуй использовать флаги INTERNET_FLAG_IGNORE_CERT_CN_INVALID и INTERNET_FLAG_IGNORE_CERT_DATE_INVALID в вызове OpenRequest.

SECURITY_INTERNET_MASK=INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID|Еще какие то... Вобщем это не помогает
Re[3]: WinInet & Сертифекаты HTTPS
От: AliluA Россия  
Дата: 29.06.03 16:45
Оценка:
Здравствуйте, swap, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, swap, Вы писали:


S>>При заходе на оди HTTPS ресурс IE выдает сообщение системы безопастности "Сертефикат выдан организацией не входящей в состав доверенных...." и предлагает грузить/не грузить страницу. Когда я gsnf.cm dsgjkybnm pfghjc через WinInet тому же серверу, мне выдается сообщение "Ошибочная авторизация сертефиката". Вопрос как обойти этот чертов сертефика и выполнить запрос?


S>>Запрос делаю так:


S>>
S>>DWORD iflags=INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD;
S>>CHttpFile* pFile=NULL;
S>>CHttpConnection* pConnection=NULL;

S>>CString strHeaders =_T("Content-Type: application/x-www-form-urlencoded");
S>>CString strFormAction=_T("/cgi-bin/cgi.exe?");
S>>CString strFormData = _T("function=db_login&Operator=1111&Password=3412&Lang=2");

S>>   CInternetSession session;
S>> try{
S>>   pConnection=session.GetHttpConnection(_T("someurl.ru"),0,INTERNET_DEFAULT_HTTPS_PORT,NULL,NULL);


S>>   pFile =pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,strFormAction,NULL,1,NULL
S>>                        ,NULL,iflags
S>>                        |SECURITY_INTERNET_MASK
S>>                        |INTERNET_FLAG_SECURE
S>>                        );

S>> BOOL result = pFile->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength()); 

S>>

А>>Попробуй использовать флаги INTERNET_FLAG_IGNORE_CERT_CN_INVALID и INTERNET_FLAG_IGNORE_CERT_DATE_INVALID в вызове OpenRequest.

S>SECURITY_INTERNET_MASK=INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID|Еще какие то... Вобщем это не помогает


У меня такая же фигня. Есть сертификат, у которого кроме даты, все в порядке. Как его программно обойти/установить?
Флаги INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогают.

Плиз, хелп, кто разбирался с подобными вещами.
Хорошо в Сибири летом: целый месяц снега нету.
Re[4]: WinInet & Сертифекаты HTTPS
От: swap Россия  
Дата: 29.06.03 21:43
Оценка:
Здравствуйте, AliluA, Вы писали:


AA>У меня такая же фигня. Есть сертификат, у которого кроме даты, все в порядке. Как его программно обойти/установить?

AA>Флаги INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогают.

AA>Плиз, хелп, кто разбирался с подобными вещами.


Я так и не разобрался как эту фигню обойти... весь проект из-за этой фигни пока стоит, я понял так что эта фигня не решается в WinInet и WinHttp вроде тоже... Думаю может есть альтернативы WinInet где эту штуку можно обойти, правда я не искал, если вам что-нить подобное попадется то отпишити плз.
Re[5]: WinInet & Сертифекаты HTTPS
От: _vvs Россия  
Дата: 30.06.03 13:38
Оценка:
Здравствуйте, swap, Вы писали:

S>Здравствуйте, AliluA, Вы писали:



AA>>У меня такая же фигня. Есть сертификат, у которого кроме даты, все в порядке. Как его программно обойти/установить?

AA>>Флаги INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогают.

AA>>Плиз, хелп, кто разбирался с подобными вещами.


S>Я так и не разобрался как эту фигню обойти... весь проект из-за этой фигни пока стоит, я понял так что эта фигня не решается в WinInet и WinHttp вроде тоже... Думаю может есть альтернативы WinInet где эту штуку можно обойти, правда я не искал, если вам что-нить подобное попадется то отпишити плз.


Не знаю точно, так как сам не сталкивался с подобной проблемой, но, может быть, Вам поможет следующее. Есть opensource библиотека OpenSSL, которая, помимо всего прочего, позволяет работать с сертификатами. Она поставляется с документацией и примерами. Работает под Unix и Windows. Может быть, она Вам поможет.

Творческих успехов.
Re[6]: WinInet & Сертифекаты HTTPS
От: swap Россия  
Дата: 01.07.03 11:06
Оценка:
Здравствуйте, _vvs, Вы писали:

_>Здравствуйте, swap, Вы писали:


S>>Здравствуйте, AliluA, Вы писали:



AA>>>У меня такая же фигня. Есть сертификат, у которого кроме даты, все в порядке. Как его программно обойти/установить?

AA>>>Флаги INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогают.

AA>>>Плиз, хелп, кто разбирался с подобными вещами.


S>>Я так и не разобрался как эту фигню обойти... весь проект из-за этой фигни пока стоит, я понял так что эта фигня не решается в WinInet и WinHttp вроде тоже... Думаю может есть альтернативы WinInet где эту штуку можно обойти, правда я не искал, если вам что-нить подобное попадется то отпишити плз.


_>Не знаю точно, так как сам не сталкивался с подобной проблемой, но, может быть, Вам поможет следующее. Есть opensource библиотека OpenSSL, которая, помимо всего прочего, позволяет работать с сертификатами. Она поставляется с документацией и примерами. Работает под Unix и Windows. Может быть, она Вам поможет.


Да, я ее посмотрел (правда мельком), если ее использовать то придется все работу HTTP/HTTPS писать самому через сокеты — что накладно, и для меня несколько сложновато.
Предлагаю поискать RFC
От: akasoft Россия  
Дата: 01.07.03 15:56
Оценка:
Здравствуйте, swap, Вы писали:

Я бы предложил поискать соответствующий RFC и почитать. Обычно помогало...
... << RSDN@Home 1.1 alpha 1 >>
Re: WinInet & Сертифекаты HTTPS
От: Mistery Россия  
Дата: 31.07.06 13:26
Оценка:
Здравствуйте, swap, Вы писали:

S>При заходе на оди HTTPS ресурс IE выдает сообщение системы безопастности "Сертефикат выдан организацией не входящей в состав доверенных...." и предлагает грузить/не грузить страницу. Когда я gsnf.cm dsgjkybnm pfghjc через WinInet тому же серверу, мне выдается сообщение "Ошибочная авторизация сертефиката". Вопрос как обойти этот чертов сертефика и выполнить запрос?


нашел ответ, может кому поможет:
DWORD dwFlags = 0, dwBuffLen = sizeof(DWORD);
InternetQueryOption (*pFile, INTERNET_OPTION_SECURITY_FLAGS,
(LPVOID)&dwFlags, &dwBuffLen);

dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
InternetSetOption (*pFile, INTERNET_OPTION_SECURITY_FLAGS,
&dwFlags, sizeof (dwFlags) );
Mistery
Re[2]: WinInet & Сертифекаты HTTPS
От: swap Россия  
Дата: 31.07.06 19:20
Оценка:
Здравствуйте, Mistery, Вы писали:

M>Здравствуйте, swap, Вы писали:


S>>При заходе на оди HTTPS ресурс IE выдает сообщение системы безопастности "Сертефикат выдан организацией не входящей в состав доверенных...." и предлагает грузить/не грузить страницу. Когда я gsnf.cm dsgjkybnm pfghjc через WinInet тому же серверу, мне выдается сообщение "Ошибочная авторизация сертефиката". Вопрос как обойти этот чертов сертефика и выполнить запрос?


M>нашел ответ, может кому поможет:

M> DWORD dwFlags = 0, dwBuffLen = sizeof(DWORD);
M> InternetQueryOption (*pFile, INTERNET_OPTION_SECURITY_FLAGS,
M> (LPVOID)&dwFlags, &dwBuffLen);

M> dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;

M> InternetSetOption (*pFile, INTERNET_OPTION_SECURITY_FLAGS,
M> &dwFlags, sizeof (dwFlags) );

Если не ошибаюсь, я тогда так тоже пытался сделать, но это работало только не системах с ИЕ 6.0 и выше, с ниже не работало...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.