Russian Qt Forum
Март 29, 2024, 14:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSslSocket: Разрешить на сервере только своих клиентов  (Прочитано 4090 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Июль 24, 2015, 21:32 »

Собственно вопрос в теме. И сервер и клиент собственные, нужно запретить подключаться к серверу чужакам. Понятно что можно замутить какую-нибудь аутентификацию на основе своего протокола и т.п., но как мне кажется перебор. Можно ли на сервере проверить, что клиент - это мой клиент, и отсечь другие?
« Последнее редактирование: Июль 24, 2015, 21:40 от Alex Custov » Записан
Bepec
Гость
« Ответ #1 : Июль 25, 2015, 01:39 »

эмм... Ну простая авторизация как вариант под общим пользователем. Чем не фикус?

PS ну типа клиент посылает - "я клиент", а ты его записываешь под доверенными и уже отсылаешь что нужно Улыбающийся
Записан
sergek
Гипер активный житель
*****
Online Online

Сообщений: 861


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #2 : Июль 26, 2015, 12:50 »

Можно ли на сервере проверить, что клиент - это мой клиент, и отсечь другие?
Чтобы решить задачу, сначала определить критерии. Что значит, "мой клиент", как его отличить от "не моего клиента"?
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Bepec
Гость
« Ответ #3 : Июль 26, 2015, 13:59 »

Он уточнил, что и сервер и клиент "Его". Т.е. правки по обоим направлениям возможны.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #4 : Июль 26, 2015, 14:39 »

Зачем мутить свои протоколы? Все уже придумано до нас  Улыбающийся
1. Создать свой центр сертификации.
2. Установить сертификат ЦС (QSslSocket::setCaCertificates).
3. Издать клиентские сертификаты и установить их для клиентов (QSslSocket::setLocalCertificate).
4. Серверу при подключении клиентов установить режим проверки сертификата (QSslSocket::setPeerVerifyMode).
5. Проверять ошибки SSL.
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #5 : Июль 27, 2015, 08:09 »

С авторизацией по сертификату предложили Вам - добротное решение, проверенное временем и т.д. (в этом случае следует иметь в виду, что сертификаты имеют свойство истекать и их придется заменять на новые, также можно генерировать один клиентский на всех, а можно один сертификат на каждого клиента)
Все зависит от уровня безопасности.
С любым из вариантов нужны доп телодвижения, будь то авторизация по логину/паролю/токену/сертификату.
Если очень элементарный нужен всего-навсего, можете клиентом при подключении присылать на сервер "магическую комбинацию байт" (хоть фразу "Привет, ребята, я свой"). Кто не пришлет - disconnectFromHost().
А так для сервера все сокеты на одно лицо, они ведь сокеты  Улыбающийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Июль 27, 2015, 12:30 »

Предложение с центром сертификации вроде самое правильное, спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.