为什么 HTTPS 会胜出?有人知道 Netscape 和 Microsoft 都选择 HTTPS 的具体原因吗?HTTPS代替超文本传输协议(RFC2660)?
在我看来,S-HTTP 更灵活,不需要单独的 IP 或端口来提供正确的证书,因为 S-HTTP 能够利用主机标头。当时 IP 空间是一个问题吗?
我可以看到 HTTPS 比 S-HTTP 加密了更多的连接数据,但如果您可以轻松地分辨出用户访问了哪个网站,那么我看不出有什么意义,因为每个 IP 只有一个站点(大多数时候),并且证书通常会说明哪个域名。
我的答案:SSL 由 Netscape 于 1993/1994 年创建,HTTPS 自然也于 1994 年左右添加到 SSL 中。HTTPS 最初的目标是在不做任何更改的情况下将现有协议改造为安全协议。S-HTTP 直到 1999 年才出现,并且需要 HTTP 1.1,因此到那时 HTTPS 已经根深蒂固,实施 S-HTTP 几乎没有好处。谢谢大家。
答案1
编辑:我在一些地方看到 RFC 2817 被称为“S-HTTP”,但这是错误的,与问题无关,该问题是关于 RFC 2660 的,因为@戴夫·霍兰德他在回答中指出。我的回答中的一些元素也适用于 RFC 2660,而且由于有相似之处,因此可能有助于比较,但我在这里真的不值得赞成。抱歉造成混淆...
我认为,与 HTTPS 相比,对S-HTTP HTTP 升级到 TLS的普遍指责是,它可以通过拦截但不中继消息Upgrade
(尽管服务器可以对此采取一些措施)进行降级攻击,并且从浏览器的角度来看,更难确定 URI 是否是安全的(https://
与http://
前缀相比)。(当然,这与使用诸如 等机制的协议所使用的论点完全相反,与S-HTTPSTARTTLS
HTTP 升级到 TLS更相似。)在这两种情况下,协议都必须正确配置(正确的密码套件,...),并且用户界面必须向用户提供足够的信息来判断连接是否安全(好证书/坏证书,...)。
更重要的是,这可能与“市场力量”有关,从历史上看,市场力量已经实现了 HTTPS 但没有实现 S-HTTP,并且没有理由改变(在底层 SSL/TLS 级别,从 SSLv2 转移到 SSLv3 和 TLSv1 及以上版本已经足够长的时间了)。
此外,RFC 2817于 2000 年发布,那时 HTTPS 已经存在了一段时间。该Upgrade
机制还依赖于使用 HTTP 1.1,而 HTTPS 也可以通过 HTTP 1.0 工作(当时,并非所有东西都支持 HTTP 1.1)。
您可能会发现这些主题很有趣:
答案2
SHTTP 于 1993 年在 Mosaic 和 NCSA httpd 中发明并实现。HTTPS 在市场上大获成功,因为 Mosaic Communications Corporation/Netscape 开发了 SSL 并将其嵌入 Netscape Navigator 和 Netscape Enterprise Server 中。Netscape 拒绝实现 SHTTP。Netscape 发布后,没有人愿意使用 Mosaic。
答案3
当时实际决策者的一些评论/帖子会很有趣——我可以说,当时我不记得听到太多关于 s-http 的消息,而 https 很早就出现了。
回想起来 - s-http 规范看起来非常开放和灵活,这可能是它失败的原因 - 我认为 https 指定了 SSL 的使用并暗示了全局 PKI 的使用及其工作原理 - 而 s-http 说“是的,如果你愿意的话我们可以这样做......加上所有这些其他的东西”。
答案4
我可以告诉你,S-HTTP 加密单个消息,而 HTTPS 加密整个通信通道,从技术角度来看,这可能是部分原因。由于它只加密单个消息,因此不能用作 VPN 之类的协议。我并不真正知道其他情况。请参阅https://www.rfc-editor.org/rfc/rfc2660有关 S-HTTP 的更多详细信息。