![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]
> Или мне нужно установить сертификат с этого сайта?
именно