Главная страница
    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.053 c
15-1267515795
@!!ex
2010-03-02 10:43
2010.08.27
Опять AOL бунтует?


15-1266509022
Копир
2010-02-18 19:03
2010.08.27
Таки они были?!


2-1268985882
Boortwint
2010-03-19 11:04
2010.08.27
Программирование с использованием строк.


15-1268991257
Дмитрий С
2010-03-19 12:34
2010.08.27
На чем писать для Windows Mobile 6.5?


15-1274120084
М. Береговой
2010-05-17 22:14
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский