Название: 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 Предложение с центром сертификации вроде самое правильное, спасибо.
|