创建客户端服务器连接时,在客户端使用客户端证书有什么好处?“AuthenticateAsClientAsync”。
- 难道只有我们才能确定这个客户是已知客户吗?
- 当服务器将数据发送回客户端时是否会添加额外的加密?
- 不需要客户端证书有什么缺点
我找不到这方面的详细信息
有关该项目的更多详细信息:这是我第一次开发自己的 SslStream。我从来没有直接处理过它。我有通过套接字连接连接并发送更新的客户端。我创建了一个可以通过多种方式发挥作用的 POC。服务器始终提供安全证书
sslStream.AuthenticateAsServer(x509Certificate, EnableCertificate, SslProtocols.Tls12, false);
但我已经让它工作了,客户不需要提供有效的证书。这一切都有效。
客户端证书是一种身份验证形式。还有其他方法,例如密码。客户端证书的优点是它们更强大:秘密永远不会被交换。相反,拥有秘密(私钥)的证明是通过签署服务器定义的数据来完成的。此外,即使在 TLS 级别上,它也能抵抗中间人,即如果有一些 TLS 拦截公司代理或类似的流量监控,它就不再成功。
不,这只是关于身份验证。TLS 提供的加密应该也已经足够了。
这取决于使用什么来代替。如果需要强身份验证但只完成弱身份验证(简单密码),那么这显然是一个缺点。
使用客户端证书也有其缺点。它们需要进行管理,可能需要不时更换,需要以安全的方式交付给客户。这种管理会增加复杂性。
为了确保加密不是由攻击者而是由目标服务器完成,正确的服务器身份验证至关重要。不过,客户端身份验证(无论是证书还是密码)是一个不同的用例:需要找出客户端是谁,以便在应用程序中应用适当的访问控制。