client
The application entity that initiates a TLS connection to a
server. This may or may not imply that the client initiated the
underlying transport connection. The primary operational
difference between the server and client is that the server is
generally authenticated, while the client is only optionally
authenticated.
在TLS中,服务器(连接
listen
的那一方)总是需要证书。客户端证书只能用于对等身份验证,但不能用于通道加密。还要记住,如果没有某种基础设施(例如使用证书颁发机构或信任数据库)来验证证书,就不能简单地“加密”连接。没有证书有效性验证的加密不适用于主动对手(google将其称为“中间人攻击”(man-in-the-middle attack),了解更多细节)。
SSL/TLS中的证书仅用于身份验证,加密本身由握手过程中协商的共享密钥完成。
如果您想使用证书,那么至少需要SSL/TLS服务器有一个证书(可能是TCP客户机)。在建立连接时,确实可以交换客户机和服务器的角色。也就是说,SSL/TLS服务器不必是TCP服务器,但可以是TCP客户机。参见specification glossary中的定义:
然而,这样做会导致困难。就像传统SSL/TLS连接中的服务器无法检测到请求是否已通过MITM(仅由客户端负责检查服务器证书,而无需客户端证书验证),使TCP客户机成为SSL/TLS服务器使TCP客户机很难知道它正在与它想要的TCP服务器通信:服务器实际上可能是一个MITM。你得考虑一下这是否适合你的需要。
在Python中,您应该能够使用^{} 参数选择SSL/TLS套接字的方向。
这完全没有道理。私钥应由颁发证书的一方保密。
也许你想要的是预共享密钥机制。
相关问题 更多 >
编程相关推荐