1

普通套接字与 ssl 套接字(相对于 openSSL)有什么区别?

客户端可以通过普通套接字连接到服务器上的端口 443 (https),​​然后启动 ssl 握手吗?

4

2 回答 2

2

是的。OpenSSL 的经典(非 BIO)API 旨在完全支持这种类型的使用,允许 SSL/TLS 会话随时附加到现有套接字。HTTPS 不是这种用法的一个很好的例子,因为 HTTPS 需要在连接时立即握手。更像是 POP3 或 SMTP,它们支持 STARTTLS 命令以在双方首先通过普通连接明确同意后动态启动 SSL 握手。

于 2013-06-06T21:54:37.833 回答
1

普通通信和 SSL 通信之间的唯一区别是协议。端口 443 也没有什么特别之处,只是它希望通过 SSL 协议进行通信。

因此,客户端完全可以使用任何特殊的方式连接到端口 443,并且只要它们发送正确的字节(代表 SSL 握手的字节),任何侦听端口 443 上的 SSL 连接的服务器都会响应。

如果'plain socket'和'ssl socket'是指特定于API的东西,比如Java EncryptedSSLSocketConnection,那么请澄清。

于 2013-06-06T21:53:18.057 回答