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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Synapse пример соденинения со своими ключами 
V
    Опции темы
igorsh
Дата 30.9.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!

Помогите пожалуйста примером или идеей на следующую проблему:

нужно написать сервер и клиент, который бы могли работать только друг с другом через SSL, при подключении к серверу "левого" клиента его отключать также и при подключении клиента к "левому" серверу отключаться от такого сервера. Т.е. в общем случае стоит проблема проверки подлинности сертификатов сервера и клиента. Обычное подключение по SSL (synapse сам генерит необходимые данные) у меня получаются, а вот со своими сертификатами не получается, т.е. соединение есть, но как проверить, что клиент "левый" я не знаю (проверяю броузером).

Спасибо за помощь!
PM MAIL   Вверх
Virtuals
Дата 30.9.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



igorsh
ну вот те для начала, /переделаная демка из http в https/
Код

unit http;
.....
procedure TTCPHttpThrd.Execute;
var
//  b: byte;
  timeout: integer;
  s: string;
  method, uri, protocol: string;
  size: integer;
  x, n: integer;
  resultcode: integer;
begin
 //HTTPS

 sock.SSL.CertificateFile:='host_x.pem';
 sock.ssl.PrivateKeyFile:='host_x.pem';
 sock.ssl.CertCAFile:='host_x.pem';
 sock.SSL.KeyPassword:='MyPassPro';

 sock.SSLAcceptConnection;
sock.SendString('HTTPS/1.0 ' + IntTostr(sock.Lasterror) + CRLF);
  if sock.Lasterror <> 0 then
    Exit;
.......


это для 
Цитата
а вот со своими сертификатами не получается

 smile дальше бум копать.

Это сообщение отредактировал(а) Virtuals - 30.9.2009, 12:31
PM MAIL ICQ   Вверх
igorsh
Дата 30.9.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, за ответ!

Я именно так и делаю, но дело в том, что мне нужно как-то клиентов проверять.

Я делаю вот так на клиенте:
Код

    LHttp.Sock.SSL.PFXfile := 'ssl\client01.p12';
    LHttp.Sock.SSL.KeyPassword := 'q1w2e3';
    LHttp.HTTPMethod('GET', 'https://localhost');


сервер так пускает и выдаёт данные

и делаю вот так
Код

    //LHttp.Sock.SSL.PFXfile := 'ssl\client01.p12';
    //LHttp.Sock.SSL.KeyPassword := 'q1w2e3';
    LHttp.HTTPMethod('GET', 'https://localhost');


и так тоже сервер выдаёт данные, а хочется чтобы ругался smile
PM MAIL   Вверх
igorsh
Дата 1.10.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Отвечаю сам себе. Может кому пригодится.

Оказывается надо было поставить в серверной части sock.SSL.VerifyCert := True;

Код

  sock.SSL.CertificateFile := 'ssl\ca.crt';
  sock.SSL.PrivateKeyFile := 'ssl\ca.key';
  sock.SSL.CertCAFile := 'ssl\ca.crt';
  sock.SSL.KeyPassword := '';
  sock.SSL.VerifyCert := True;


тогда у броузера сервер начинает запрашивать и проверять сертификат, а вот у клиента, который написан на Synapse почему-то пропускает соединение без сертификата, тогда таких хитрецов можно проверить на пустоту sock.SSL.GetCertInfo

вот так:
Код

  sock.SSLAcceptConnection;
  if (sock.SSL.GetCertInfo = '') then
    Abort();


а если у такого клиента задан сертификат, но он "левый", то в этом случае сервер его честно отбрасывает.


Это сообщение отредактировал(а) igorsh - 1.10.2009, 09:23
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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