https协议和SSL证书的区别

Posted

技术标签:

【中文标题】https协议和SSL证书的区别【英文标题】:Difference between https protocol and SSL Certificate 【发布时间】:2010-10-25 18:24:34 【问题描述】:

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

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

【问题讨论】:

假设有一个 webapp 已经在 SSL 端口 (https) 上运行。为什么要为这个 web 应用提供证书? 【参考方案1】:

一个解决方案的两个部分。

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

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

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

"您需要一个证书才能使用任何使用 SSL 的协议。" : 不!请参阅下面 Jon Weldon 非常准确且知识渊博的答案。 @Jean-François,实际上,John Weldon 的回答并不是特别准确。首先,严格来说,您不需要证书来使用 SSL/TLS(请参阅 PSK、Kerberos 甚至匿名密码套件)。其次,严格来说,没有“SSL 证书”之类的东西:大多数情况下,X.509 证书具有用于 SSL/TLS 的正确属性/扩展名。此外,SSL 中的证书不限于验证服务器,它们也可以用于验证客户端(使用此配置时)。 重新阅读我上面的评论。我说不,你不需要证书!我同意它们是 X.509 证书,但由于大多数人将其称为 SSL 证书,所以我们简单地称呼它。对于一般性的答案,乔恩·韦尔登(Jon Weldon)的学术性不如您,但仍然是一个不错的答案。【参考方案3】:

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://,或者您可能为她设置了一个书签。老实说,这超出了我们对用户的期望。但是假设我们的伪用户...]

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

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

【讨论】:

“HTPS”,您的意思是“HSTS”吗?无论如何,“HTTPS 极易受到 SSL Stripping / MITM(中间人)的攻击。”不是真的。虽然 HSTS 是整个系统的一个受欢迎的补充,但它仍然使用 HTTPS。容易受到 SSL 剥离的不是 HTTPS,而是人们使用链接和检查证书的方式才是问题所在。【参考方案4】:

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

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

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

【讨论】:

不可否认性是指确保合同或通信的一方不能否认他们在文件上签名或发送的消息的真实性的能力。

以上是关于https协议和SSL证书的区别的主要内容,如果未能解决你的问题,请参考以下文章

SSL,SSL证书,SSL协议,三个其实都是一个吗?还是说有区别呢

HTTP,SSL/TLS和HTTPS协议的区别与联系

http和ws哪个快

转载 https协议和http协议的区别

python https协议和InsecurePlatformWarning问题

ssl协议是啥