Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Как получить детали отклоненного запроса - IdHTTPServer+OpenSSL ?   Найти похожие ветки 

 
laao   (2008-07-31 13:01) [0]

Delphi 7, IdHTTPServer, IdServerIOHandlerSSLOpenSSL, OpenSSL  0.9.8g (или 0.9.6m, не принципиально)

цель - если запрос был отклонен при проверке сертификата, нужно сохранить информацию о нем - IP и содержание запроса

насколько я понимаю, для ручной проверки сертификата можно использовать событие OpenSSLVerifyPeer компонента IdServerIOHandlerSSL. но в качестве входных параметров там только сертификат и результат его проверки библиотекой OpenSSL. никакие данные самого HTTP запроса в этом обработчике не доступны

если запрос, не прошедший проверку, все же пропустить принудительно и установить некий флаг отказа, то потом текст запроса можно получить в IdHTTPServer.CommandGet. но нет никакой гарантии, что при большом количестве запросов они будут поступать на эти обработчики в одном и том же порядке :(


 
Slym ©   (2008-07-31 13:04) [1]

laao   (31.07.08 13:01)
и результат его проверки библиотекой OpenSSL. никакие данные самого HTTP запроса в этом обработчике не доступны

Правильно, т.к. до HTTP запроса еще не дошло...
Чтобы дошло до HTTP запроса нужен "правильный" сертификат


 
Slym ©   (2008-07-31 13:06) [2]

Slym ©   (31.07.08 13:04) [1]
Сначала устанавливается шифрованный SSL тунель (но ты его обрываешь в OpenSSLVerifyPeer), а уж потом по тунелю идут данные - в твоем случае HTTP запрос\ответ


 
laao   (2008-07-31 13:20) [3]

Slym

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


 
Slym ©   (2008-07-31 13:39) [4]

версия Indy какая?
если дефолтовая 9 то навскидку так
procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
 if AThread.Connection.Socket is TIdSSLIOHandlerSocket then
   TIdSSLIOHandlerSocket(AThread.Connection.Socket).SSLSocket.PeerCert.Subject
end;


 
laao   (2008-07-31 14:23) [5]

спасибо !

у меня indy 10.1.5

метод IdHTTPServer выглядит так - IdHTTPServerCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);

соответственно, обращаюсь к сертификату так - (AContext.Connection.Socket as TIdSSLIOHandlerSocketOpenSSL).SSLSocket.PeerCert. ....



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.061 c
2-1270922444
Evgeney
2010-04-10 22:00
2010.08.27
Процедура для открытия Child форм


15-1272810608
antonn
2010-05-02 18:30
2010.08.27
Просьба прогнать тест еще раз :)


4-1233081707
avi9526
2009-01-27 21:41
2010.08.27
Как получить доступ к скрытому за окном изображению?


6-1216631498
mv
2008-07-21 13:11
2010.08.27
XML


2-1269419918
oleg1963lora
2010-03-24 11:38
2010.08.27
Время вставки строк. Нужна идея!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский