Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi и сети
Войти
Регистрация
Восстановить пароль
 
AVolkof
2 / 2 / 0
Регистрация: 02.01.2016
Сообщений: 69
Записей в блоге: 2
#1

Get средствами idHTTP с SSL на конкретный ресурс - Delphi

04.12.2016, 14:56. Просмотров 992. Ответов 7
Метки нет (Все метки)

Не так давно была написана процедурка для полученя вендора по MAC адресу.
Есть локальная база, но полнотой она не отличается. А есть облачный сервис https://macvendors.com/api
Пока они работали по HTTP проблем не было. Теперь есть. Вот так я пытаюсь подключиться:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function GetMACVendorFromInet(const MAC: string):string;
var
  idHTTP1: TidHTTP;
  HttpParam : TStringList;
  IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket;
  s: string;
begin
try
   idHTTP1:= TidHTTP.Create(nil);
   IdSSLIOHandlerSocket1:=TIdSSLIOHandlerSocket.Create(idHTTP1);
   IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv1 ;  //sslvTLSv2; sslvTLSv3
   idHTTP1.IOHandler:=  IdSSLIOHandlerSocket1;
//  idHTTP1.Head('https://api.macvendors.com/'+MAC);
  //   ShowMessage(idHTTP1.Response.ContentType);
    Result:= idHTTP1.Get('https://api.macvendors.com/'+MAC);
  except
   Exit;
 end;
end;
В ответ получаю
“error connecting with ssl”
Тем же способом на другом сайте работает(там я скачиваю AdwCleaner).
Библиотеки ssleay32.dll и libeay32.dll у меня довольно древние (2001-й год, версии в свойствах файлов нет).
Если дело может быть в них, и у кого-то есть новые, то прошу поделиться.
Ну или посоветуйте чего...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2016, 14:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Get средствами idHTTP с SSL на конкретный ресурс (Delphi):

Ошибка при проверке почты средствами IdPOP3 и SSL
HELP! Приложение для проверки почты через IdPOP3 изначально не коннектилось с...

IdHTTP и IdHTTP сервер: как отправить сообщение от сервера к клиенту?
Всем привет, отправляю файл по частям с клиента на сервер, и хочу получать...

Delphi XE8 idIMAP4 gmail и ошибка error connecting with ssl error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version nu
В чем может быть ошибка? ССЛ библиотек уже кучу перебрал Вроде по коду все...

FMX Android IDHTTP SSL
Здравствуйте, подскажите что и как нужно сделать что бы заработал IDHTTP в...

Javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
Всем доброго времени суток, подскажите, пожалуйста, из-за чего ошибка? ...

SSL vs Fiddler (в рамках Silverlight) - объясните нужно ли иметь SSL?
Доброго времени суток. Я разрабатываю бизнес-приложение, которое работает с...

7
krapotkin
3297 / 2937 / 1015
Регистрация: 14.04.2014
Сообщений: 14,261
Записей в блоге: 13
04.12.2016, 17:32 #2
версия делфи?
0
AVolkof
2 / 2 / 0
Регистрация: 02.01.2016
Сообщений: 69
Записей в блоге: 2
04.12.2016, 17:55  [ТС] #3
Delphi 7
0
krapotkin
3297 / 2937 / 1015
Регистрация: 14.04.2014
Сообщений: 14,261
Записей в блоге: 13
04.12.2016, 18:42 #4
тогда ищите правильные версии DLL
0
FirmFreez
1 / 1 / 1
Регистрация: 09.05.2015
Сообщений: 31
06.12.2016, 15:52 #5
Вот держи, я ими пользуюсь, может быть подойдут...
1
Вложения
Тип файла: rar ssl_dll.rar (557.3 Кб, 20 просмотров)
AVolkof
2 / 2 / 0
Регистрация: 02.01.2016
Сообщений: 69
Записей в блоге: 2
06.12.2016, 17:27  [ТС] #6
Спасибо ещё и на словах. Жирные какие либы!
Где взять список для допустимых значений SSLOptions.Method ?
ПС: В данном случае я нашел другой ресурс, там HTTP обычный.
0
FirmFreez
1 / 1 / 1
Регистрация: 09.05.2015
Сообщений: 31
06.12.2016, 19:51 #7
Вот что пишут наши забугорные товарищи на этот счет:

Setting the SSLVersions to a single value automatically sets the Method to the corresponding single version. Setting the SSLVersions to multiple values automatically sets the Method to slvSSLv23.

Setting the Method to a single version automatically sets the SSLVersions to the corresponding single value. Setting the Method to slvSSLv23 automatically sets the SSLVersions to all supported values.

Indy activates/deactivates the appropriate SSL_OP_NO_SSL_v# and SSL_OP_NO_TLS_v# flags in OpenSSL depending on the values of Method and SSLVersions.

I would suggest the following approach, which is a slightly more future proof as new TLS versions are added:

IdSSLHandler->SSLOptions->Method = sslvSSLv23;
IdSSLHandler->SSLOptions->SSLVersions = IdSSLHandler->SSLOptions->SSLVersions >> sslvSSLv2;
Either way, Indy would be using SSLv23 with only the SSL_OP_NO_SSL_v2 flag activated.

In that configuration, a "wrong version" error typically means the server is using a specific version that does not support version negotiation (which uses an SSLv2-compatible client hello). In other words, an SSLv23 client connecting to a TLSv1 server will fail. The server must use SSLv23 in order to support version negotiation. Using SSLv23 on the server allows it to accept any version client, as the client initiates the handshake so the server can see which version header is being used. But using SSLv23 on the client DOES NOT allow it to connect to any server OTHER THAN an SSLv23 server. An SSLv2 server can only accept SSLv2 clients, an SSLv3 server can only accept SSLv3 clients, a TLSv1 server can only accept TLSv1 clients, and so on.

To truly connect to "any" server, you would have to detect a "wrong version" error and retry with a different specific Method/SSLVersions configuration. Unfortunately, the "wrong version" reply does not include the server's actual version, so you have to use trial-and-error. If SSLv23 fails, try TLSv1_2. If that fails, try TLSv1_1. If that fails, try TLSv1. If that fails, try SSLv3.
0
AVolkof
2 / 2 / 0
Регистрация: 02.01.2016
Сообщений: 69
Записей в блоге: 2
08.12.2016, 10:30  [ТС] #8
Цитата Сообщение от FirmFreez Посмотреть сообщение
If SSLv23 fails
так и есть.

Delphi
1
IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1_2;
[Error] NetwTools.pas(952): Undeclared identifier: 'sslvTLSv1_2'
Indy 9. Возможно, что дело в этом.
Ладно, частная проблема решена сменой источника информации.
Займусь пока более актуальными вещами.
0
08.12.2016, 10:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2016, 10:30
Привет! Вот еще темы с решениями:

Есть файл ресурсов. В ресурс загрузил картинку. Как программно добавить в ресурс файл?
$R New1.res...button1.click... Var my1:TBitMap; Res:TResourceStream;...

SSL цены различия и самописный ssl
1) В общем есть задача "поставить" SSL на проект. цены слишком разнятся и...

Подписанный SSL vs неподписанный SSL
Здравствуйте, подскажите, пожалуйста, стоит-ли покупать подписанный SSL...

idhttp и переход по сайтам idhttp и переход по ссылкам idhttp и переход по ссылкам
Всем привет! У меня такая ситуация: При помощи idhttp авторизуюсь на сайте,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru