SSL是否可以使用服务器证书和客户端密码?

时间:2016-01-29 11:07:32

标签: ssl encryption

基于这个答案:https://stackoverflow.com/a/3107645/1559672可以在没有用户验证的情况下设置ssl连接。

我认为我的问题的答案是肯定的,但找不到任何确认/拒绝的答案。

这个想法是服务器有一个证书,客户端可以通过CA验证。然后客户端生成一些秘密并使用服务器的公钥加密。基于这个共享秘密,它们生成用于加密/解密的“密钥材料”。在他们拥有安全连接后,客户端可以使用用户名/密码进行验证。

这样可能吗?如果有,请告诉我一些例子或证明。 如果没有,为什么不呢?

1 个答案:

答案 0 :(得分:1)

  

混淆的原因是因为RabbitMQ doc:rabbitmq.com/ssl.html“连接而不验证证书”的示例代码没有定义接受哪些服务器证书或RootCA。 (RabbitMQ证书是自签名的)所以我不知道如何设置TLS?

加密不依赖于证书。并且自签名证书仍然是有效证书。

证书的目的是证明远程对等体的身份。您真的可以确定您正在与您认为正在谈话的服务器通话,并且您的连接目前没有被劫持吗?这是通过服务器提供它可能具有的证书来确保的(公钥/私钥加密验证这一点,只有服务器应该具有证书的私钥;这里的信任/安全性取决于服务器保持其私钥本身)。

您如何信任证书?好吧,您可以在可信证书库中获得它的副本。您可以使用自签名证书执行此操作:只需将其放入您信任的商店;因为你(大概)知道它来自何处,所以它是值得信赖的 由于这对于Web上的每个公共站点都是不现实的,因此存在public key infrastructure,允许您信任可以签署任意未知方证书的有限已知数量的证书颁发机构,并且您可以间接信任那些迄今未知的证书。

说完这一切之后,加密是一个单独的组件,可以使用或不使用证书提供的身份验证来设置加密的安全连接。