在同一服务器端口上支持SSL和非SSL

时间:2011-03-16 15:48:27

标签: openssl client-server

我计划使用OpenSSL将加密添加到我的服务器/客户端通信中。但我想让用户选择是否要使用SSL通道进行通信。最简单的方法是创建2个套接字并将它们绑定到不同的端口,但我希望服务器只在一个端口上提供服务。

无论如何打开服务器端的SSL套接字,支持关于客户端传入连接的SSL和非SSL通信吗?

P.S。我使用OpenSSL lib作为我的c ++代码。

1 个答案:

答案 0 :(得分:1)

TLS客户端问候语具有标准格式。您可以查看第一条消息的前几个字节,检测这是否是TLS客户端问候,然后做出相应的响应。

另一种解决方案是连接端口X上的未加密服务,并设置stunnel以侦听端口Y,它将处理TLS层,并将明文转发到本地端口X.虽然这将绑定到两个端口,您的服务只能运行一次。