Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Indy + SSL = не могу залогиниться [D7, WinXP]


CaptainAlex ©   (2009-03-20 09:58:00) 

Может посоветуете что? Задача - залогиниться на сайт по https. Запрос уходит, а возвращается эта же страница, т.е. логина не происходит. Все dll есть и все что можно вроде бы добавлено и проверено :( Или мне нужно установить сертификат с этого сайта?
Сайты пробовал разные, поведение одинаковое.

Вот такой код есть:

 HTTP := TidHTTP.Create(nil);
 HTTP.AllowCookies := true;
 HTTP.HandleRedirects := true;
 HTTP.Intercept := Form1.IdLogFile1;
 FUseSLL := true;
 if FUseSLL then
 begin
   SSLIO := TIdSSLIOHandlerSocketOpenSSL.Create(HTTP);
   HTTP.IOHandler := SSLIO;
   SSLIO.SSLOptions.Method := sslvSSLv3;
   HTTP.Request.BasicAuthentication := true;
   HTTP.ReadTimeout := 40000;
 end;
 Params := TStringList.Create;

 Params.Clear;
 Params.Add(GetLoginParam('Username') + '=' + GetLogin);
 Params.Add(GetLoginParam('Password') + '=' + GetPassword);
 HTML := HTTP.Post(GetLoginParam('PostURL'), Params);

Поля, их значения и URL возвращаются функциями корректно. Для проверки кода можно использовать:

Params.Add(GetLoginParam('login=delphikingdom');
Params.Add(GetLoginParam('password=delphi');
HTML := HTTP.Post('https://www.fotolia.com/Member/Login', Params);


CaptainAlex   (2009-03-20 15:15:00) [1]

SSLOptions.VerifyMode на что-то влияет в данном случае? у меня там пусто сейчас.


CaptainAlex   (2009-03-20 14:25:00) [2]

Palladin, спасибо


CaptainAlex   (2009-03-20 14:24:00) [3]

Обработчик написал, работает как и прежде :( В остальных обработчиках надо что-то писать?


Palladin   (2009-03-20 14:04:00) [4]

hInet:=InternetOpen('WRWinInet',INTERNET_OPEN_TYPE_PRECONFIG,Nil,Nil,0);
hConn:=InternetConnect(hInet,PChar(p_strHost),INTERNET_DEFAULT_HTTPS_PORT,Nil,Ni l,INTERNET_SERVICE_HTTP,0,1);
hReq:=HttpOpenRequest(hConn,'POST',PChar(p_strDoc),Nil,Nil,Nil,INTERNET_FLAG_SEC URE or INTERNET_FLAG_IGNORE_CERT_CN_INVALID or INTERNET_FLAG_KEEP_CONNECTION,1);
HttpSendRequest(hReq,PChar(strHdrs),Length(strHdrs),PChar(p_strData),Length(p_st rData))


Медвежонок Пятачок   (2009-03-20 13:39:00) [5]

не надо никого ловить.
Пиши обработчик OnverifyPeer и возвращай из него True


CaptainAlex   (2009-03-20 13:20:00) [6]

2Palladin

Пример обращения к сайту с использованием SSL в самом простейшем случае. Хочется уяснить как обращаться с сертификатами на клиенте.

2 Медвежонок Пятачок

Где именно нужно этот сертификат отловить? В заголовках про него ничего нет. Нужно ли как-то по-особенному его запрашивать? Если есть пример как это сделать средствами Indy, было бы здорово посмотреть.
Могу выложить лог, который дает TIdLogFile


Медвежонок Пятачок   (2009-03-20 12:15:00) [7]

Итак, я могу забрать с сайта сертификат *.crt,

сертификат сам прилетает с сайта в ответе на гет или пост клиента.
твоя задача - сказать в обработчике клиента, принимаешь ты его или нет.
сам сертификат никуда пихать не надо.


Palladin   (2009-03-20 11:59:00) [8]


> можно пример на WinInet?

пример чего конкретно?


CaptainAlex   (2009-03-20 11:36:00) [9]

Итак, я могу забрать с сайта сертификат *.crt, что мне с ним делать дальше. Indy  же нужен pem, правильно я понимаю? Можно алгоритм действий?

2Palladin
можно пример на WinInet? Я не очень с этим делом знаком.


Palladin   (2009-03-20 10:22:00) [10]

вообще рекомендую выбросить indy и работать с WinInet


Palladin   (2009-03-20 10:21:00) [11]

на диск :)


Медвежонок Пятачок   (2009-03-20 10:17:00) [12]

интересно куда его надо установить, если ссл не работает с виндовыми хранилищами сертификатов .....


Palladin   (2009-03-20 10:03:00) [13]


> Или мне нужно установить сертификат с этого сайта?

именно


Наверх

Титульная страница Поиск, карта сайта Написать письмо