Russian Qt Forum

Qt => Работа с сетью => Тема начата: Alex Custov от Июль 24, 2015, 21:32



Название: QSslSocket: Разрешить на сервере только своих клиентов
Отправлено: Alex Custov от Июль 24, 2015, 21:32
Собственно вопрос в теме. И сервер и клиент собственные, нужно запретить подключаться к серверу чужакам. Понятно что можно замутить какую-нибудь аутентификацию на основе своего протокола и т.п., но как мне кажется перебор. Можно ли на сервере проверить, что клиент - это мой клиент, и отсечь другие?


Название: Re: QSslSocket: Разрешить на сервере только своих клиентов
Отправлено: Bepec от Июль 25, 2015, 01:39
эмм... Ну простая авторизация как вариант под общим пользователем. Чем не фикус?

PS ну типа клиент посылает - "я клиент", а ты его записываешь под доверенными и уже отсылаешь что нужно :)


Название: Re: QSslSocket: Разрешить на сервере только своих клиентов
Отправлено: sergek от Июль 26, 2015, 12:50
Можно ли на сервере проверить, что клиент - это мой клиент, и отсечь другие?
Чтобы решить задачу, сначала определить критерии. Что значит, "мой клиент", как его отличить от "не моего клиента"?


Название: Re: QSslSocket: Разрешить на сервере только своих клиентов
Отправлено: Bepec от Июль 26, 2015, 13:59
Он уточнил, что и сервер и клиент "Его". Т.е. правки по обоим направлениям возможны.


Название: Re: QSslSocket: Разрешить на сервере только своих клиентов
Отправлено: Hellraiser от Июль 26, 2015, 14:39
Зачем мутить свои протоколы? Все уже придумано до нас  :)
1. Создать свой центр сертификации.
2. Установить сертификат ЦС (QSslSocket::setCaCertificates).
3. Издать клиентские сертификаты и установить их для клиентов (QSslSocket::setLocalCertificate).
4. Серверу при подключении клиентов установить режим проверки сертификата (QSslSocket::setPeerVerifyMode).
5. Проверять ошибки SSL.


Название: Re: QSslSocket: Разрешить на сервере только своих клиентов
Отправлено: torwig от Июль 27, 2015, 08:09
С авторизацией по сертификату предложили Вам - добротное решение, проверенное временем и т.д. (в этом случае следует иметь в виду, что сертификаты имеют свойство истекать и их придется заменять на новые, также можно генерировать один клиентский на всех, а можно один сертификат на каждого клиента)
Все зависит от уровня безопасности.
С любым из вариантов нужны доп телодвижения, будь то авторизация по логину/паролю/токену/сертификату.
Если очень элементарный нужен всего-навсего, можете клиентом при подключении присылать на сервер "магическую комбинацию байт" (хоть фразу "Привет, ребята, я свой"). Кто не пришлет - disconnectFromHost().
А так для сервера все сокеты на одно лицо, они ведь сокеты  :)


Название: Re: QSslSocket: Разрешить на сервере только своих клиентов
Отправлено: Alex Custov от Июль 27, 2015, 12:30
Предложение с центром сертификации вроде самое правильное, спасибо.