0

我有一个 tcp 服务器并使用 cms/pkcs#7 来保护在客户端和服务器之间传递的消息。作为初始会话的一部分,将客户端公钥传递给服务器是正常的做法吗?作为公钥,当会话启动时,初始的 clp 命令将传递密钥以及服务器需要了解的有关客户端的其他重要细节。它是公开的,所以不需要加密,它是公开的。

客户端/服务器通信由 ssl/tls 保护。

谢谢。鲍勃。

4

1 回答 1

1

您不信任 SSL/TLS 还是为什么要在安全通道内再次加密?只有当服务器将消息传递到其他节点并且它将在其他地方解密,从而创建端到端的安全性时,这才有意义。

在任何情况下,您都不应该让客户端只将公钥传递给服务器。相反,它应该将证书传递给服务器,服务器应该根据使用与证书中包含的公钥匹配的私钥进行的签名来验证客户端。此外,服务器将需要检查证书本身(它是否来自受信任的 CA,是否对链中的签名进行验证等)。

如果可以,您应该在 SSL/TLS 层上使用 SSL/TLS 相互身份验证(客户端证书身份验证)来完成所有这些操作。如果你不能,那么确保你设计了一个安全的应用层协议来验证客户端和它的公钥。否则可能会冒充其他客户。

于 2012-04-20T14:30:06.043 回答