SSL 操作需要使用受信任的第三方——证书颁发机构来验证服务器向客户端提供的公钥。
另一方面,SSH 依赖于客户端通过其他方式获得服务器的公钥(例如,通过从服务器物理访问它并将其保存在客户端)。
为什么这些协议在运行机制上会有如此大的差异?我的意思是他们都可以使用第三方方法,这对我来说似乎更用户友好并且可能更安全。
SSL 操作需要使用受信任的第三方——证书颁发机构来验证服务器向客户端提供的公钥。
另一方面,SSH 依赖于客户端通过其他方式获得服务器的公钥(例如,通过从服务器物理访问它并将其保存在客户端)。
为什么这些协议在运行机制上会有如此大的差异?我的意思是他们都可以使用第三方方法,这对我来说似乎更用户友好并且可能更安全。
因为它们的用途不同。HTTPS 中常用的 TLS/SSL x509 证书用于连接公共系统,即有大量人访问的系统,其中大多数人事先没有与系统所有者进行带外连接。
另一方面,SSH 主要用于由少数服务器管理员访问私有系统,这些服务器管理员之前曾访问过系统以设置服务器密钥或其他形式的对系统的带外访问以验证服务器密钥指纹。
请注意,如果您在连接之前未验证服务器提供的密钥指纹是否与您期望的相符,那么 SSH 模型是不安全的。在 TLS 中,检查密钥指纹所有权的责任被移交给了证书颁发机构 (CA)。
TLS 也可以与自签名证书或私有 CA 一起使用,后者在与 SSH 类似的信任模型中工作。
为了向连接用户验证服务器,您观察到的实现差异并不是真正的技术差异。特别:
SSL 不需要使用受信任的第三方——您可以将 SSL 与自签名证书一起使用(这相当于 SSH 密钥身份验证的工作方式)。
SSH 可以使用不依赖人工验证的服务器身份验证方法(请参阅Kerberos)。
不同之处在于这两种协议的使用方式、用途和使用对象:
当前的全球 SSL PKI 基础设施针对的是大量不精通技术的用户,为他们提供了一种验证公共服务的方式。
相比之下,SSH 的使用非常有限,并不面向公众。与获得的价值相比,建立中央信任(甚至是小型组织的 Kerberos)的负担很大。