53

我们在 Web 浏览器中使用的 https 协议和 SSL 证书有什么区别?

这两个不是用于加密客户端(浏览器)和服务器之间的通信吗?

4

4 回答 4

53

HTTPS 是 HTTP(超文本传输​​协议)加上 SSL(安全套接层)。您需要证书才能使用任何使用 SSL 的协议。

SSL 允许安全地通信任意协议。它使客户端能够 (a) 验证他们确实在与他们期望的服务器通信,而不是中间人,以及 (b) 加密网络流量,以便客户端和服务器以外的各方无法看到通信。

SSL 证书包含公钥和证书颁发者。客户端不仅可以使用证书与服务器通信,客户端还可以验证证书是否由官方证书颁发机构加密签名。例如,如果您的浏览器信任 VeriSign 证书颁发机构,并且 VeriSign 签署了我的 SSL 证书,那么您的浏览器将天生信任我的 SSL 证书。

这里有一些很好的阅读:http ://en.wikipedia.org/wiki/Transport_Layer_Security

于 2009-05-13T05:37:08.753 回答
38

两件合一的解决方案。

https 是定义客户端和服务器如何协商安全连接的协议。

SSL 证书是他们将用来同意服务器真实性的文件。

于 2009-05-13T05:32:37.623 回答
6

HTPS 是新的 HTTPS。HTTPS 极易受到 SSL Stripping / MITM(中间人)的攻击。引用亚当兰利(谷歌)的博客帝国紫罗兰:

“HTTPS 往往会导致人们发表演讲,嘲笑证书安全性及其周围的生态系统。”

问题是页面不是通过 HTTPS 提供的。应该是这样,但是当用户在浏览器中键入主机名时,默认方案是 HTTP。服务器可能会尝试将用户重定向到 HTTPS,但这种重定向是不安全的:MITM 攻击者可以重写它并使用户保持在 HTTP 上,从而始终欺骗真实站点。攻击者现在可以拦截到这个配置良好且安全的网站的所有流量。

这被称为 SSL 剥离,它非常简单且非常有效。我们可能不会经常看到它,因为它不是公司代理需要做的事情,所以它不在现成的设备中。但这种喘息的时间不太可能持续很长时间,而且可能已经结束:我们怎么知道它是否被使用了?

为了停止 SSL 剥离,我们需要使 HTTPS 成为唯一的协议。我们不能为整个 Internet 做到这一点,但我们可以使用 HTTP 严格传输安全 (HSTS) 逐个站点地做到这一点。

HSTS 告诉浏览器始终通过 HTTPS 向 HSTS 站点发出请求。网站通过内置在浏览器中或通过标头广告成为 HSTS:

严格的传输安全性:max-age=8640000;包括子域

标头在给定的秒数内有效,也可能适用于所有子域。必须通过干净的 HTTPS 连接接收标头。

一旦浏览器知道一个站点仅是 HTTPS,输入 mail.google.com 的用户是安全的:初始请求使用 HTTPS,攻击者没有漏洞可以利用。

(mail.google.com 和许多其他网站已经作为 HSTS 网站内置在 Chrome 中,因此实际上无法使用 Chrome 通过 HTTP 访问 accounts.google.com - 我必须修改该图像!如果你想被包括在内在 Chrome 的内置 HSTS 列表中,给我发电子邮件。)

HSTS 还可以保护您(网站管理员)免于犯愚蠢的错误。假设您已经告诉您的母亲,在访问她的银行网站之前,她应该始终键入 https://,或者您可能为她设置了一个书签。老实说,这超出了我们对用户的期望。但是假设我们的伪用户...]

由于stackoverflow上新用户的阻碍/非常愚蠢的链接规则,我不能给你亚当的其余答案,你必须自己访问亚当兰利的博客 https://www.imperialviolet.org/2012/07/19 /hope9talk.html

“Adam Langley 在 Google 的 HTTPS 服务基础设施和 Google Chrome 的网络堆栈上工作。”

于 2013-11-28T13:44:49.640 回答
1

HTTPS 是一种应用层协议。它可以通过数字签名提供对个别请求或响应的不可否认性。

SSL 是较低级别的协议,没有此功能。SSL 是一种传输级加密。

HTTPS 比 SSL 更灵活:应用程序可以配置它需要的安全级别。SSL 的选项较少,因此更易于设置和管理。

于 2013-12-28T13:54:30.427 回答