Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenSsl разбираюсь, было бы проще с вашими советами 
:(
    Опции темы
null56
Дата 2.7.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проблема:
У меня возникла задача  использования на сервере библиотеки openssl, до поддержания безопасного соединения. Изначально планировалось использовать openssl через классы Qt (QSslSocket), но они не совсем хорошо они подходят под мою задачу, поэтому решил попробовать комбинацию этих двух средств.

Хотелось бы задать несколько вопросов людям, которые уже активно используют openssl
С библиотекой в чистом виде НИКОГДА не работал, поэтому некоторые вопросы могут показаться глупыми.
Начал поиск информации по openssl и набрел на вот эти статьи
http://www.ibm.com/developerworks/linux/li...99&S_CMP=CP
http://www.ibm.com/developerworks/linux/li...99&S_CMP=CP
http://www.ibm.com/developerworks/ru/libra...ssl3/index.html

1) Библиотека, я так понял, написала на C, а значит является переносимой между платформами, поэтому вопрос: смогу  ли я использовать данную библиотеку для работы с сокетами под linux и windows

2) Читая статью заметил это
Цитата

Listing 1. Required headers

#include "openssl/bio.h"
#include "openssl/ssl.h"
#include "openssl/err.h"

Это получается сердце библиотеки, которое содержит всё необходимое для создания защищенного канала и обмена по нему данными, используя сертификат и закрытый ключ? (ну err.h, я так понял для строк с ошибками).
Что потребуется еще?

3) Если у кого есть подробные маны для работы с опенссл, киньте пожалуйста ссылочки

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

Заранее благодарен за помощь


PM MAIL   Вверх
jonie
Дата 2.7.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата



1) Библиотека, я так понял, написала на C, а значит является переносимой между платформами, поэтому вопрос: смогу  ли я использовать данную библиотеку для работы с сокетами под linux и windows
да. более того вы можете использовать "местные" сокеты openSSL - т.н. BIOSocket-ы, если мне не изменяет память (собственно их и будете использовать).

Цитата
Это получается сердце библиотеки, которое содержит всё необходимое для создания защищенного канала и обмена по нему данными, используя сертификат и закрытый ключ? (ну err.h, я так понял для строк с ошибками).
Что потребуется еще?

это хедеры, сама библиотека состоит из многих файлов. Если вы будете использовать уже скомпилированную версию то понадобятся lib файл-ы, и , если библиотека скомпонована как динамическая, dll\so файлы самой библиотеки.

Цитата
3) Если у кого есть подробные маны для работы с опенссл, киньте пожалуйста ссылочки
4) Если у кого есть под рукой, то скиньте пожалуйста элементарный примерчик использования библиотеки на серверной и клиентской сторонах... 
в исходниках openSSL есть примеры (и не один) и документация по работе с ней.




--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
null56
Дата 3.7.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если я буду получать новые соединения в виде дескрипторов сокетов (int), не средствами BIO, то есть без BIO_do_accept. То смогу ли я потом связать этот дескриптор с объектом BIO, если да, то я так понимаю, это должна сделать одна из этих функций?
Код

        long BIO_set_fd(BIO *b, int fd, long close_flag);
        BIO *BIO_new_socket(int sock, int close_flag);

Так же хотел спросить:
1) Что такое close_flag? я до них еще не дошел или не допер...
2) Где мне можно сказать сокету, что я хочу работать в неблокирующем режиме? это нужно сделать fcntl или в openssl библе есть свои методы?

Это сообщение отредактировал(а) null56 - 3.7.2009, 13:13
PM MAIL   Вверх
MAKCim
Дата 4.7.2009, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Цитата(null56 @  3.7.2009,  13:12 Найти цитируемый пост)
1) Что такое close_flag? я до них еще не дошел или не допер...

сокет закрывается при освобождении (free()) объекта BIO


Цитата(null56 @  3.7.2009,  13:12 Найти цитируемый пост)
2) Где мне можно сказать сокету, что я хочу работать в неблокирующем режиме? это нужно сделать fcntl или в openssl библе есть свои методы?

насколько я знаю, таких методов нет


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
null56
Дата 4.7.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MAKCim, по поводу блокирующего - неблокирующего.... кусок из статьи
Цитата

BIO_read will attempt to read a certain number of bytes from the server. It returns the number of bytes read, or 0 or -1. On a blocking connection, a return of 0 means that the connection was closed, while -1 indicates that an error occurred. On a non-blocking connection, a return of 0 means no data was available, and -1 indicates an error. To determine if the error is recoverable, call BIO_should_retry. 

а по умолчанию в какой режиме работает сокет через BIO?

Это сообщение отредактировал(а) null56 - 4.7.2009, 13:08
PM MAIL   Вверх
MAKCim
Дата 5.7.2009, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Цитата(null56 @  4.7.2009,  13:07 Найти цитируемый пост)
а по умолчанию в какой режиме работает сокет через BIO?

по-умолчанию создается блокирующий сокет (через socket()), поэтому и BIO_s_socket работает в блокирующем режиме


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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