Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Протокол httpS. Не шифруются данные


Автор: bakanaev 9.8.2013, 14:01
Все мы знаем для чего нужен протокол https, что бы шифровать трафик идущий от клиента к серверу. Но почему-то IdHTTP+IdSSLIOHandlerSocketOpenSSL получают и отдают запросы не шифруя . Т.е я смог посмотреть снифером что ушло на сервер+что пришло с него. Может кто знает как сделать так, что бы все шло шифровано? 

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

Пробовал как Indy, так и Synapse, везде нет шифрования. Уже сил нету, помогите пожалуйста.
Код на Synapse
Код

httpsend:=THTTPSend.Create;
httpsend.Sock.SSL.CertificateFile:='client01.crt';
httpsend.Sock.SSL.PrivateKeyFile:='client01.key';
httpsend.HTTPMethod('get','https://site.ru/test.html' );
 



Код на Indy
Код

IdHTTP1.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile:='client01.crt';
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile:='client01.key';
IdHTTP1.Get('https://site.ru/test.html');

Буду благодарен за любые подсказки.

Автор: Matematik 10.8.2013, 15:30
OpenSSL библиотека на месте? 
CertFile и KeyFile указывать не обязательно, оно нужно только для аутентификации тебя на сервере. Чтобы просто получить данные по https оно не нужно. 
У себя проверил, Indy и Synapse идут по 443 порту и шифруются.

Код

uses httpsend, ssl_openssl, ZLibExGz;

procedure TForm1.btn1Click(Sender: TObject);
var
  httpsend : THTTPSend;
  str: TStringStream;
begin
  httpsend:=THTTPSend.Create;
  httpsend.HTTPMethod('get', 'https://twitter.com') ;
  ShowMessage(httpsend.Headers.Text);
  httpsend.Document.Position := 0;
  str := TStringStream.Create('');
  str.CopyFrom(httpsend.Document, httpsend.Document.Size);
  ShowMessage(GZDecompressStr(str.DataString));
end;

Автор: Illusion Dolphin 10.8.2013, 17:51
Цитата

можно спокойно увидеть все что идет на сайт и приходит с него, через любой снифер. 

Значит одно из 2х:
1) Сниффер подменяет сертификаты и расшифровывает https (атака типа man-in-the-middle)
2) А HTTPSа-то нету smile Сайт не работает по https и работает через http 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)