Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 очень огорчили).

Приложение:
  1.  
  2.  
  3. object HTTP: TIdHTTP
  4. ProtocolVersion = pv1_1
  5. RecvBufferSize = 1024
  6. HandleRedirects = True
  7. Request.Accept = '*/*'
  8. Request.ContentLength = 0
  9. Request.ContentRangeEnd = 0
  10. Request.ContentRangeStart = 0
  11. Request.ProxyPort = 81
  12.  
  13.  
  14. object SSL: TIdConnectionInterceptOpenSSL
  15. SSLOptions.Method = sslvSSLv3
  16. SSLOptions.Mode = sslmClient
  17. SSLOptions.VerifyMode = []
  18. SSLOptions.VerifyDepth = 0
  19.  
  20.  
  21.  
  22. HTTP.Intercept := SSL;
  23. 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)';
  24. 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, */*';
  25. HTTP.Request.Referer := 'https://www.icq.com/register/';
  26. HTTP.Request.ContentType:= 'application/x-www-form-urlencoded' ;
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. 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';
  36.  
  37.  
  38.  
  39. {send2: TMemo;}
  40. 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');
  41.  
  42.  
  43.  
  44.  
  45. HTTP.DoRequest (hmpost,'https://www.icq.com/register/index.php', send2.lines, Reply);
  46.  
  47.  
  48. -------------------------------------------------------------
  49. POST /register/index.php HTTP/1.1
  50. Host: www.icq.com
  51. 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, */*
  52. Referer: https://www.icq.com/register/
  53. 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)
  54. Content-Length: 393
  55. Content-Type: application/x-www-form-urlencoded
  56. Cookie: 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
  57.  
  58. 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
  59. -----------------------------------------------------------------
  60.  
  61.  
  62. POST /register/index.php HTTP/1.1
  63. 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, */*
  64. Referer: https://www.icq.com/register/index.php
  65. Accept-Language: ru
  66. Content-Type: application/x-www-form-urlencoded
  67. UA-CPU: x86
  68. Accept-Encoding: gzip, deflate
  69. 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)
  70. Host: www.icq.com
  71. Content-Length: 391
  72. Connection: Keep-Alive
  73. Cache-Control: no-cache
  74. Cookie: 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
  75.  
  76. 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
  77.  
  78.  
  79.  
  80. ------------------------------------------------------------------------
  81. HTTP/1.0 302 Found
  82. Date: Thu, 19 Mar 2009 04:48:30 GMT
  83. Server: Apache
  84. Cache-Control: no-store, no-cache, must-revalidate
  85. Set-Cookie: karma_user_572202118=ICQ%23+572202118; expires=Fri, 19-Mar-2010 04:48:30 GMT; path=/; domain=.icq.com
  86. Set-Cookie: karma_login=572202118; expires=Fri, 19-Mar-2010 04:48:30 GMT; path=/; domain=.icq.com
  87. Set-Cookie: karma_session=93E2939E12221F73E955D8CDC65BCD5CE3FB4614000319085B41838F85E3144F2063D18EDEF4FE747825C7C0A64CE47B55C89247D5BB61F1B8F583760177D676DF33D5B66D7531CB7B932E0BAE787F8FEEC871F0AEF73018CF63E0BDB2D82C0AF5E476976F7930A26E46726A389D80D185EB964DE81BD945FCD9787FF36A5CE3225475AF6739FDF8B9EDAC1E9B5A4192; expires=Fri, 19-Mar-2010 04:48:30 GMT; path=/; domain=.icq.com
  88. Location: /register/thanks.php?service=30&uin=572202118&email=somenick93251%40yandex.ru&newuser=1&lg_id=&lang=en&key=
  89. P3P: CP="ONL UNI COM PHY NAV INT DEM CURo OUR"
  90. Connection: close
  91. Content-Type: text/html
  92.  
  93.  
  94. ---------------------------------------------------------------------------------------------------------
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  


CrazyDream Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

CrazyDream (статус: Посетитель), 19 марта 2009, 10:02 [#1]:

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

Этот сертификат - www.icq.com AOL Member CA - даже установлен у меня в браузере в разделе "Сертификаты-другие пользователи".

Может быть его как-то можно привинтить к программе?
В общем по прошествии суток нон-стоп шаманских танцев и лазанья по инету я в ступоре.) Ложусь спать, как проснусь попробую:
1.другие версии библиотек ОпенССЛ
2.прочесть всю ветку вашего форума, касающаюся протоколов и сетей.

а дальше - как в анекдоте: "Ежик упал в яму в лесу, ходит по ней кругами, ходит.. Думает - блин, если еще 2 часа так и не придумаю, как отсюда вылезли - пойду домой за лесницей!" xDD
Вадим К

Вадим К (статус: Академик), 19 марта 2009, 10:06 [#2]:

а с сертификатом это здравая идея.
Галочка "подтверждения прочтения" - вселенское зло.
CrazyDream

CrazyDream (статус: Посетитель), 19 марта 2009, 11:25 [#3]:

пробовал экспортировать сертификат из хранилища в файл *.cer - SSL компонент отказывается его признавать ни за cert, ни за key, ни за rootcert.
при этом как я понял, там нужны Ключ и Сертификат, чтобы все нормально работало.. в общем каких-либо faq-ов по теме нет, а собирать по кусочкам, да еще и в большинстве на английском - не так уж и просто=\
да и вобще, ИндиИнДепс утверждает, что "проверять сертификаты - обязанность пользователя" - типа она ничего такого не проверяет, и принимает все серты молча. тьфу.

1. по очереди все либы +- 2 версии.
2. синапс
канеш в идеале бы перекомпилить библиотеки инди.. но это все равно что строить несколько-километровый водопровод из-за того, что хочется пить=))
буду отрабатывать варианты от простого к сложному. Спс Вадим.
Вадим К

Вадим К (статус: Академик), 19 марта 2009, 11:37 [#4]:

если один юнит портит всё картину, то не обязательно перекомпилировать всё. есть более правильный подход. Нужный pas файл копируется в папку с программой и правиться. Делфи будет подхватывать его с папки с проектом. Работает практически всегда.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 29 февраля 2020, 10:07
Выполнено за 0.02 сек.
Рейтинг@Mail.ru