![关于谁应该持有哪个密钥(公钥与私钥)的基本原则是什么?](https://linux22.com/image/1611161/%E5%85%B3%E4%BA%8E%E8%B0%81%E5%BA%94%E8%AF%A5%E6%8C%81%E6%9C%89%E5%93%AA%E4%B8%AA%E5%AF%86%E9%92%A5%EF%BC%88%E5%85%AC%E9%92%A5%E4%B8%8E%E7%A7%81%E9%92%A5%EF%BC%89%E7%9A%84%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%88%99%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
在 SSH 日志记录场景中,客户端保留私钥,而服务器将公钥存储在其 ./ssh 目录下。
在不同的场景中,例如 SSL,服务器保存私钥并将其对应的公钥提供给最终用户。
我在网上读了很多关于这两个密钥的文章,要么离题,要么对初学者来说太深奥了。有人能用通俗易懂的语言解释一下这里决定谁应该持有哪个密钥的规则是什么吗?非常感谢。
答案1
在所有情况下,正在验证持有私钥(实际上是两把钥匙,整套钥匙)。验证身份验证的一方只需要知道公钥。
SSH 和 TLS/SSL 实际上都支持身份验证两个都客户端和服务器,因此每个连接可能使用两个不同的密钥对 - 一个用于验证服务器的身份(服务器持有私钥),另一个用于验证客户端的身份(客户端持有私钥)。
例如,在 SSH 中,服务器的authorized_keys
文件保存客户端公钥,但客户端的known_hosts
文件保存服务器公钥。
当您在建立 SSH 连接时被要求验证“主机密钥指纹”时,您会看到服务器的公钥,而服务器将其私钥存储在 /etc/ssh 中。完成该步骤后,客户端会向服务器提供自己的公钥。
(TLS 中存在与“客户端证书认证”相同的东西,但相比之下它有点罕见 - 但即使它在网络上非常罕见,许多浏览器仍然支持它。)