Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отключение-включение SSL не разъединясь 
:(
    Опции темы
Sokolll
Дата 10.9.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.4.2007

Репутация: 0
Всего: 0



Использую Indy 10.1.5,  BDS2006, IdTCPServer  и IdTCPClient.

Необходимо реализовать возможность включения-отключения SSL-шифрования, не разрывая соединения.


Подскажите, пожалуйста, как  грамотно сделать.
PM MAIL   Вверх
Snowy
Дата 10.9.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Никак.
Если только ты сам будешь всё шифровать до передачи в IdTCPClient
PM MAIL   Вверх
Sokolll
Дата 10.9.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.4.2007

Репутация: 0
Всего: 0



Спасибо.

Еще такой вопрос:
Сервер (TIdTCPServer) работает без SSL.
Клиент с SSL:
Код

var
  IdIOHandlerSocketSSL: TIdSSlIOHandlerSocketOpenSSl;
  IdTCPClient: TIdTCPClient;

........
procedure Connect(AHost: string; APort: Integer);
begin
  IdIOHandlerSocketSSL:=TIdSSlIOHandlerSocketOpenSSL.Create;
  IdIOHandlerSocketSSL.OnGetPassword:=IdIOHandlerSocketSSLGetPassword;
  IdIOHandlerSocketSSL.OnVerifyPeer:=IdIOHandlerSocketSSLVerifyPeer;
  with IdIOHandlerSocketSSL.SSLOptions do
  begin
    KeyFile:='..\CERTIFICATES\client.key';
    CertFile:='..\CERTIFICATES\client.crt';
    RootCertFile:='..\CERTIFICATES\root.pem';
    Method:=sslvSSLv23;
    VerifyMode:=[sslvrfPeer, sslvrfFailIfNoPeerCert];
    VerifyDepth:=3;
  end;
  if IdTCPClient.IOHandler=nil then
    IdTCPClient.CreateIOHandler();
  IdTCPClient.IOHandler:=IdIOHandlerSocketSSl;
  with IdTCPClient do
  begin
    Host:=AHost;
    Port:=APort;
    IdTCPClient.ConnectTimeout:=1000;
    IdIOHandlerSocketSSL.ConnectTimeout:=1000;
  try
      Connect;
    except
      on E: Exception do
      begin
        DoOnException(E);
        Result:=E;
        Exit;
      end;
    end;
  end;


Почему-то когда коннектюсь, приложение виснет на совсем, хотя ConnectTimeout ставлю, и по идее через секунду должно вылететь Error Connectiong with SSl :(




PM MAIL   Вверх
Snowy
Дата 10.9.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Потому что соединение происходит без ошибки.
Просто клиент ждёт, когда ему отдатут сертификат.
А сервер и не думает этого делать.
Но соединение существует и ошибки никакой нет.
PM MAIL   Вверх
Sokolll
Дата 10.9.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.4.2007

Репутация: 0
Всего: 0



Какой тогда выход предложите, чтобы клиент не зависал?
Только если разъединяться со сотроны сервера после определенного времени. Выполнение процедуры IdTCPClient.Connect никак же прервать нельзя?
PM MAIL   Вверх
Snowy
Дата 10.9.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Если ты разрабатываешь свои сервер-клиент, то для начала продумай протокол общения.
Для этого существует определённое приветствие.
Если к серверу обратились без приветствия, то он должен отключать клиента, как не работающего по твоему протоколу.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0801 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.