| 
| 
 | Вопрос # 2 538/ вопрос открыт / | 
 |  Здравствуйте, эксперты!
 буду признателен, если наприавие по правильному пути в моей борьбе с подлой ошибкой, имя которой "Error connecting with SSL",  причем - по сути - выскакивающей уже ПОСЛЕ(!!) получения данных через это самое SSL, но "убивающей" моё хрупкое приложение.
 
 пытаюсь общаться со страничкой https с помощью компонентов TIdHTTP и TIdConnectionInterceptOpenSSL (Indy)
 Delphi6. библиотеки OpenSSL: indy_OpenSSL096m
 (пусть вас не пугает название странички, с которой я работаю - все, что я делаю  - исключительно в учебных целях)
 
 В бщем буду крайне признателен, если кто-нибудь отзывчивый хотя бы направит меня к решению данной проблемы, коих я вижу нескоько:
 1.что-то у меня таки неправильно настроено...
 2.возможно, есть вариант "задавить" эту ошибку - просто чтобы она не выскакивала. (пробовал удалить все упоминания об этой ощибке из соответствующего pas файла Sourse'ов - не помогло. Видимо надо удалять и перекомпилировать библиотеки для этого - omg)
 3.возможно, есть более простой и "железный" способ общаться  с приложениями через SSL. Буду признателен за ссылу на дельный faq.
 
 ps. можно не писать о том, что моя программа может рассматриваться как вмешательство куда-то там :) с помощью этой программы в любом случае придется вводить изображения + не удастся зарегистрировать более 3 номеров в сутки.
 но разобраться действительно хочется. :-(
 
 зы2. Так же буду признателен за линк на нечто, более подробно рассказывающее о тонкостях работы с Https. (аж целых 2 или 3 странички, посвященные SSL+Https в IndyInDepth очень огорчили).
 Приложение:Переключить в обычный режим    object HTTP: TIdHTTP    ProtocolVersion = pv1_1    RecvBufferSize = 1024    HandleRedirects = True    Request.Accept = '*/*'    Request.ContentLength = 0    Request.ContentRangeEnd = 0    Request.ContentRangeStart = 0    Request.ProxyPort = 81    object SSL: TIdConnectionInterceptOpenSSL    SSLOptions.Method = sslvSSLv3    SSLOptions.Mode = sslmClient    SSLOptions.VerifyMode = []    SSLOptions.VerifyDepth = 0   HTTP.Intercept := SSL;HTTP.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MyIE2; .NET CLR
1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)';HTTP.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/x-shockwave-flash, application/msword, application/x-ms-application,
application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*';HTTP.Request.Referer := 'https://www.icq.com/register/';HTTP.Request.ContentType:= 'application/x-www-form-urlencoded' ;        HTTP.Request.ExtraHeaders.Text:='Cookie: geo=7; icq_ln='+memo4.Text+'; s_cc=true;
s_sq=aolwpicq%2Caolsvc%3D%2526pid%253Dicq%252520%25253A%252520Help%252520-%252520Registration%252520-%252520Index%2526pidt%253D1%2526oid%253DSubmit%2526oidt%253D3%2526ot%253DSUBMIT%2526oi%253D370;
icq_lang=ru';   {send2: TMemo;}send2.lines.Add('service=30&lg_id=&qtype=&icq_ln='+memo1.text+'&nickname=somesickd&fname=&lname=&email=somenick93251@yandex.ru&gender=0&age=13&password=222222&password_confirm=222222&qa1=What+is+your+pet%27s+name%3F&userq1=&answer1=111111&gnm='+memo2.text+'&word='+edit1.Text+'&key=&lang=en');    HTTP.DoRequest (hmpost,'https://www.icq.com/register/index.php',  send2.lines, Reply);  -------------------------------------------------------------POST /register/index.php HTTP/1.1Host: www.icq.comAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash,
application/msword, application/x-ms-application, application/x-ms-xbap,
application/vnd.ms-xpsdocument, application/xaml+xml, */*Referer: https://www.icq.com/register/User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MyIE2; .NET CLR 1.1.4322; .NET CLR
2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)Content-Length: 393Content-Type: application/x-www-form-urlencodedCookie: geo=7; icq_ln=1148E273F0D2315B2644E911E88848C6BD98500CB2C713CE45BB080A05985BCE; s_cc=true;
s_sq=aolwpicq%2Caolsvc%3D%2526pid%253Dicq%252520%25253A%252520Help%252520-%252520Registration%252520-%252520Index%2526pidt%253D1%2526oid%253DSubmit%2526oidt%253D3%2526ot%253DSUBMIT%2526oi%253D370;
icq_lang=ru service=30&lg_id=&qtype=&icq_ln=442FC1F64BCA0ADA701F0F8479A1EC35A35E2AE0556A7742C9D0E47641CE38F0&nickname=somenick&fname=&lname=&email=somenick93251@yandex.ru&gender=0&age=13&password=222222&password_confirm=222222&qa1=What+is+your+pet%27s+name%3F&userq1=&answer1=111111&gnm=B6BD0024429E75EBA000C413B8F73345D1ABA42F5F6115435B499DD060705A8FBB52B3D835F7AC7D5FE2730DFD626EEB&word=535817&key=&lang=en-----------------------------------------------------------------  POST /register/index.php HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash,
application/msword, application/x-ms-application, application/x-ms-xbap,
application/vnd.ms-xpsdocument, application/xaml+xml, */*Referer: https://www.icq.com/register/index.phpAccept-Language: ruContent-Type: application/x-www-form-urlencodedUA-CPU: x86Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MyIE2; .NET CLR 1.1.4322; .NET CLR
2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)Host: www.icq.comContent-Length: 391Connection: Keep-AliveCache-Control: no-cacheCookie: geo=7; icq_ln=1148E273F0D2315B2644E911E88848C6D178E42885451037E73DB38B81DDD3C1; s_cc=true;
s_sq=aolwpicq%2Caolsvc%3D%2526pid%253Dicq%252520%25253A%252520Help%252520-%252520Registration%252520-%252520Index%252520%252528Error%25252020%252529%2526pidt%253D1%2526oid%253DSubmit%2526oidt%253D3%2526ot%253DSUBMIT%2526oi%253D373;
icq_lang=ru service=30&lg_id=&qtype=&icq_ln=442FC1F64BCA0ADA701F0F8479A1EC354F74221F1FF2B22A72A011A704A2E55F&nickname=somenick&fname=&lname=&email=somenick93251@yandex.ru&gender=0&age=13&password=222222&password_confirm=222222&qa1=What+is+your+pet%27s+name%3F&userq1=&answer1=111111&gnm=9661A194A2FA78481C67F43AFF50AFA348B722B9F1DF9E4B728EDB139B9C15DF932F9B087C941D6FF5B7A0900338079C&word=814585&key=&lang=en   ------------------------------------------------------------------------HTTP/1.0 302 FoundDate: Thu, 19 Mar 2009 04:48:30 GMTServer: ApacheCache-Control: no-store, no-cache, must-revalidateSet-Cookie: karma_user_572202118=ICQ%23+572202118; expires=Fri, 19-Mar-2010 04:48:30 GMT; path=/;
domain=.icq.comSet-Cookie: karma_login=572202118; expires=Fri, 19-Mar-2010 04:48:30 GMT; path=/; domain=.icq.comSet-Cookie:
karma_session=93E2939E12221F73E955D8CDC65BCD5CE3FB4614000319085B41838F85E3144F2063D18EDEF4FE747825C7C0A64CE47B55C89247D5BB61F1B8F583760177D676DF33D5B66D7531CB7B932E0BAE787F8FEEC871F0AEF73018CF63E0BDB2D82C0AF5E476976F7930A26E46726A389D80D185EB964DE81BD945FCD9787FF36A5CE3225475AF6739FDF8B9EDAC1E9B5A4192;
expires=Fri, 19-Mar-2010 04:48:30 GMT; path=/; domain=.icq.comLocation:
/register/thanks.php?service=30&uin=572202118&email=somenick93251%40yandex.ru&newuser=1&lg_id=&lang=en&key=P3P: CP="ONL UNI COM PHY NAV INT DEM CURo OUR"Connection: closeContent-Type: text/html  ---------------------------------------------------------------------------------------------------------      
|  |   Вопрос задал: CrazyDream (статус: Посетитель)Вопрос отправлен: 19 марта 2009, 09:21
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, CrazyDream!Реализация ssl в Инди интересна. Наверное заметили, что для корректной работы с ссл вашему приложению нужно две dll. А теперь главная проблема: надо длл строгой версии и скомпилированые специально для инди. Я в  свое время мучился. Доходило до ручной сборки длл - так как определённых случаях вылетало с самими странными ошибками.
 Тогда я перешел на Synapse - это легковесная библиотека, которая может легко использовать "правильные версии ссл библиотек", которые по умолчанию есть в системе. Для запроса по ссл не нужно даже напрягаться - просто вместо http пишем https и всё. Остальное библиотека сама сделает. На сайте есть моя коротенькая статья (Synapse) по этой теме с примерами и сорцами.
 Попробуйте, работает прелестно.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 19 марта 2009, 10:04
 Оценка за ответ: 5
 Комментарий к оценке: попробую другие либы, потом если не выйдет -  Synapse :) сам только с 4ого раза подобрал библиотеки Инди, с котороми моя 6-ая версия вобще согласилась работать. |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 19 марта 2009, 11:37; участников в обсуждении: 2. 
|   | CrazyDream (статус: Посетитель), 19 марта 2009, 10:02 [#1]:есть предположение, что нужно как-то к моему приложению привинтить сертификат.. дело в том, что на том месте, где вылетает прога Сайт - в ультимативной форме - требует нажать кнопочку "Оекй" с подтверждением того, что я таки *хочу* соединиться через его, выданный самому себе, сертификат.
 
 Этот сертификат - www.icq.com AOL Member CA - даже установлен у меня в браузере в разделе "Сертификаты-другие пользователи".
 
 Может быть его как-то можно привинтить к программе?
 В общем по прошествии суток нон-стоп шаманских танцев и лазанья по инету я в ступоре.) Ложусь спать, как проснусь попробую:
 1.другие версии библиотек ОпенССЛ
 2.прочесть всю ветку вашего форума, касающаюся протоколов и сетей.
 
 а дальше - как в анекдоте: "Ежик упал в яму в лесу, ходит по ней кругами, ходит.. Думает - блин, если еще 2 часа так и не придумаю, как отсюда вылезли - пойду домой за лесницей!" xDD
 |  
|   | Вадим К (статус: Академик), 19 марта 2009, 10:06 [#2]:а с сертификатом это здравая идея. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | CrazyDream (статус: Посетитель), 19 марта 2009, 11:25 [#3]:пробовал экспортировать сертификат из хранилища в файл *.cer - SSL компонент отказывается его признавать ни за cert, ни за key, ни за rootcert. при этом как я понял, там нужны Ключ и Сертификат, чтобы все нормально работало.. в общем каких-либо faq-ов по теме нет, а собирать по кусочкам, да еще и в большинстве на английском - не так уж и просто=\
 да и вобще, ИндиИнДепс утверждает, что "проверять сертификаты - обязанность пользователя" - типа она ничего такого не проверяет, и принимает все серты молча. тьфу.
 
 1. по очереди все либы +- 2 версии.
 2. синапс
 канеш в идеале бы перекомпилить библиотеки инди.. но это все равно что строить несколько-километровый водопровод из-за того, что хочется пить=))
 буду отрабатывать варианты от простого к сложному. Спс Вадим.
 |  
|   | Вадим К (статус: Академик), 19 марта 2009, 11:37 [#4]:если один юнит портит всё картину, то не обязательно перекомпилировать всё. есть более правильный подход. Нужный pas файл копируется в папку с программой и правиться. Делфи будет подхватывать его с папки с проектом. Работает практически всегда. Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |