![]() |
|
Модераторы: feodorv |
![]()
|
|
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
Задача: нужно написать сервер, каждый клиент которого должен иметь свой собственный сертификат шифрования (т.е. авторизация по сертификату, как в ssh). Желательно сделать это через boost::asio.
На данный момент (поковыряв этот asio) я решил, что проще всего сделать так: при подключении клиента получить у него некий идентификатор (логин), по этому идентификатору загрузить с диска необходимый публичный ключ (приватный хранится на стороне клиента) и после этого начать процедуру SSL:handshake... Возможно ли это? И как это сделать (меня интересуют процедуры авторизации по публичному ключу и преобразования обычного сокета в защищенный)? Это сообщение отредактировал(а) bsa - 9.9.2009, 16:17 |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
да asio/examples/ssl/client.cpp тут отличный пример. Добавлено через 6 минут и 57 секунд дополню. В примерах, не используются загружаемые ключи. Нет надобности. Но если нужно, то можно. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
еще дополню.
в asio::ssl::context(могу ошибаться), есть методы с постфиксом file. они это реализуют. нужно в доках уточнить... -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
это я все видел. доки, если честно, просто жгут. Имхо, исходник был бы более информативным.
Единственное, что спасает - примеры. Но опять же, хоть бы подсветку синтаксиса сделали... Это сообщение отредактировал(а) bsa - 9.9.2009, 19:48 |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
да уж. так вот же: examples/ssl/server.cpp examples/ssl/client.cpp или что не так? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Если использовать это: http://getunderstand.com/latest/understand...-b489-win32.exe можно получить такую картинку.
имхо, намного облегчает понимание. учитывая что она динамическая. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
Я имел в виду, исходник библиотеки, а не примера. |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Ну тогда ваще не понял -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
Проблема в доке, которая хуже, чем исходник. Я только это и хотел сказать. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 5 Всего: 154 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
Мне очень интересно, можно ли один и тот же SSL контекст использовать для разных подключений (об этом в доке я ничего не нашел). Например, коннектится к серверу клиент, для него используется некий контекст, затем второй коннектится... Можно ли для него использовать тот же контекст? Ведь все методы получают неконстантный контекст! А вот в примере я увидел, что именно так и делается - контекст для всех один:
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
да. а вот наоборот, не уверен. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| bsa |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
1. клиент хранит у себя сертификат цифровой подписи ("открытый ключ"), которой подписаны сертификаты серверов 2. после установления соединения и успешного прохождения операции квитирования (handshake) (значит цифровая подпись верна, так как установлен режим проверки verify_peer), берется поле subject полученного сертификата и из него извлекается нужное поле. Делаю это так:
|
||||||
|
|||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |