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

Openssl 在同一服务器端口上同时支持SSL和非SSL,openssl,client-server,Openssl,Client Server,我计划使用OpenSSL将加密添加到服务器/客户端通信中。但是我想让用户选择是否使用SSL通道进行通信。最简单的方法就是创建2个套接字并将它们绑定到不同的端口,但我希望服务器只在一个端口上提供服务 是否仍然可以打开服务器端的SSL套接字,该套接字支持有关客户端传入连接的SSL和非SSL通信 我使用OpenSSL lib作为我的C++代码。 一个TLS客户端hello有一个标准格式。您可以查看第一条消息的前几个字节,检测这是否是TLS客户机hello,并做出相应的响应 另一种解决方案是在端口X上连

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

是否仍然可以打开服务器端的SSL套接字,该套接字支持有关客户端传入连接的SSL和非SSL通信


我使用OpenSSL lib作为我的C++代码。

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

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