如何确定传入连接是否需要SSL?

时间:2012-07-06 17:45:09

标签: c++ ssl tcp openssl

我想为未加密的TCP和SSL使用1个端口。

目标是使1端口成为机器的入口。这意味着将所有协议和传输复用到端口。例如,我查看流的前4个字节。如果它以'GET','POST','HEAD'等开头,我知道它是HTTP协议,所以我将连接传递给HTTP服务器。如果是“HELO”或“EHLO”,我知道将其传递给SMTP服务器。

问题是,如果是SSL连接(为了将其传递给OpenSSL),我该寻找什么?

1 个答案:

答案 0 :(得分:4)

SSL 2将具有8x yz(十六进制)作为前两个字节(x yz可以是任何内容,例如8F 13),并且SSL 3和更高版本具有16 03十六进制作为前两个字节。

更新:正如评论中所指出的,某些协议要求服务器首先发送内容(FTP和POP3仅举几例,并且注释中已提及SMTP),因此您的方法仅适用于有限数量的协议。