Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2010.01.10;
Скачать: [xml.tar.bz2];

Вниз

вопросы по организации OpenSSL для Indy HTTP-сервера   Найти похожие ветки 

 
laao   (2008-05-22 12:38) [0]

добрый день

Вопрос по организации своего HTTPs канала.
Использую Delphi 7, Indy 10.1.5 и Win32OpenSSL 0.9.8g, поднят свой HTTP сервер (компонент TIdHTTPServer), пока без какого-либо шифрования.

Нужно "прикрутить" к нему OpenSSL. Обращаются к серверу только определенные мной клиенты, то есть никакого "общепризнанного" сертификата на нужно.

Свой сертификат генерирую так:
cipher /R:CERTNAME
openssl pksc12 -in CERTNAME.pfx -out CERTNAME.pem

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

2. Где взять корневой сертификат, на который ссылается свойство SSLOptions.RootCertFile компонента TIdServerIOHandlerSSLOpenSSL - в книге "Indy in Depth/Глубины Indy" в переводе Подгорецкого предлагается получить его из Internet Explorer в диалоге Trusted Root Certificate Authority, но в случае создания своего сертификата это, наверное, делается как-то иначе

3. Что я должен дать клиентам, которым хочу разрешить доступ к своему серверу ? Как они зарегистрируют мои сертификаты (гугл предлагает много вариантов, из которых более достоверным кажется поместить файл в %UserProfile%\LocalSettings\CertStore) ?

4. Как я могу разрешить обращение к HTTP серверу с SSL шифрованием только пользователям, имеющим сертификат. Как я понимаю, нужно использовать TIdServerIOHandlerSSLOpenSSL.VerifyPeer, но что я могу проверить в обработчике ?.. в качестве входных параметров я получаю Certificate: TIdX509 и AOk: Boolean, не сравнивать же побайтно Certificate с какой-то своей строчной переменной ... или именно так все и делают ?


 
Reindeer Moss Eater ©   (2008-05-22 12:45) [1]

в случае создания своего ему надо задать флаг CA/

не сравнивать же побайтно

TIdX509 = class(TObject)
 protected
 ...
 public
   Constructor Create(aX509: PX509); virtual;
   Destructor Destroy; override;
   //
   property Fingerprint: TEVP_MD read RFingerprint;
   property FingerprintAsString: String read RFingerprintAsString;
   property Subject: TIdX509Name read RSubject;
   property Issuer: TIdX509Name read RIssuer;
   property notBefore: TDateTime read RnotBefore;
   property notAfter: TDateTime read RnotAfter;
 end;


 
laao   (2008-05-22 13:00) [2]


> в случае создания своего ему надо задать флаг CA/


можно подробнее ? :)


 
Reindeer Moss Eater ©   (2008-05-22 13:12) [3]

certificate authority флаг.
то есть самоподписанный сертификат.


 
laao   (2008-05-22 18:28) [4]

Ок, с генерацией разобрался, вместо родительского подсунул копию основного (как сделано в демке инди)

Остался вопрос

Как реализовать на сервере проверку сертификатов клиентов. то есть прерывать на уровне ТIdServerIOHandlerSSLOpenSSL запросы тех, у кого сертификат не установлен ?

Допустим, пользователь обращается к моему серверу через стандартный браузер. Сервер отдает по HTTPs XML-документ, который в этом браузере может быть просмотрен. Что мне нужно предварительно дать пользователю (публичный ключ, полный сертификат, в каком формате) и что проверять в событии VerifyPeer ?

Я впервые работаю с SSL. хотелось бы получить ответ "для чайника"


 
laao   (2008-05-22 19:00) [5]

p.s. в процессе откатился на OpenSSL 0.9.6m, так как с последней версией получал ошибки



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2010.01.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
2-1258470769
valussev@mail.ru
2009-11-17 18:12
2010.01.10
ошибка при запуске с другого пк


4-1226015472
Eraser
2008-11-07 02:51
2010.01.10
Проверка подлинности сервера


2-1258436479
Pascal96
2009-11-17 08:41
2010.01.10
Как найти первую цифру дробной части?


1-1232982610
Afonya
2009-01-26 18:10
2010.01.10
Чтение данных TStringGrid из другого приложения


1-1232544933
bartalbi
2009-01-21 16:35
2010.01.10
Выезжающие панели





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский