Поддержка SSL и не-SSL на одном и том же порту сервера - PullRequest
0 голосов
/ 16 марта 2011

У меня есть план добавить шифрование к моей связи сервер / клиент с помощью OpenSSL.Но я хочу позволить пользователю выбирать, хотят ли они использовать канал SSL для связи или нет.Самый простой способ - просто создать 2 сокета и привязать их к другому порту, но я хочу, чтобы сервер обслуживал службу только на одном порту.

Есть ли в любом случае, чтобы открыть сокет SSL на стороне сервера, который поддерживает как SSL, так и не-SSL связь для клиентского входящего соединения?

PS Я использую OpenSSL lib для своего кода c ++.

1 Ответ

1 голос
/ 16 марта 2011

Привет TLS-клиент имеет стандартный формат.Вы можете просмотреть первые несколько байтов первого сообщения, определить, является ли это приветствием клиента TLS, и ответить соответствующим образом.

Альтернативным решением может быть подключение незашифрованной службы к порту X иустановите stunnel для прослушивания порта Y, где он будет обрабатывать уровень TLS, и перенаправить открытый текст на локальный порт X. Хотя это будет привязывать к двум портам, ваша служба будет работать только один раз.

...