ssl - 是否可以使用带有服务器证书和客户端密码的 SSL?

标签 ssl encryption

基于这个答案:https://stackoverflow.com/a/3107645/1559672无需用户验证即可设置 ssl 连接。

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

这个想法是服务器有一个证书,客户端可以通过 CA 验证该证书。然后客户端生成一些 secret 并使用服务器的公钥加密。基于这个共享 secret ,他们生成用于加密/解密的“ key Material ”。建立安全连接后,客户端可以使用用户名/密码验证自己。

这样可以吗?如果是,请给我一些例子或证据。 如果不是,为什么不呢?

最佳答案

The reason of confusion was because of RabbitMQ doc: rabbitmq.com/ssl.html "Connecting without validating certificates" 's example code doesnt define what server certificates or RootCAs are accepted. (RabbitMQ cert is self signed) So I don't get how TLS is set up without that?

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

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

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

综上所述,加密是一个单独的组件,无论是否使用证书提供的身份验证,都可以设置加密的安全连接。

关于ssl - 是否可以使用带有服务器证书和客户端密码的 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082964/

相关文章:

java - 如何在 Jetty 中读取 HTTPS 连接的 TLS 版本?

java - JPA:在@Query 中使用 AttributeConverter

php - SMTP 连接失败并激活 TLS

xml - libcurl SSL证书验证

c# - AES 的 IV 和 key 有多少字节?

encryption - 有没有一种方法可以流式传输加密的多媒体并播放?

c - Windows 注册表解密 (CryptUnprotectData) WPA key

java - Apache Thrift 中的对称加密 (AES)

ssl - 有什么方法可以在免费的 heroku dyno 上添加免费的 SSL 证书?

ios - 使用 https ://asmx-based service with Monotouch