我们在网络浏览器中使用的https协议和SSL证书有什么区别?
这些都不是用来加密客户端(浏览器)和服务器之间的通信吗?
答案 0 :(得分:48)
HTTPS是HTTP(超文本传输协议)加SSL(安全套接字层)。您需要证书才能使用任何使用SSL的协议。
SSL允许安全地传输任意协议。它使客户能够(a)验证他们确实正在与他们期望的服务器进行通信而不是中间人,以及(b)加密网络流量,以便客户端和服务器以外的各方无法看到通信。
SSL证书包含公钥和证书颁发者。客户端不仅可以使用证书与服务器通信,还可以验证证书是否由官方证书颁发机构以加密方式签名。例如,如果您的浏览器信任VeriSign证书颁发机构,并且VeriSign签署了我的SSL证书,那么您的浏览器将固有地信任我的SSL证书。
这里有一些好的阅读:http://en.wikipedia.org/wiki/Transport_Layer_Security
答案 1 :(得分:35)
两个解决方案。
https是定义客户端和服务器如何协商安全连接的协议。
SSL证书是他们用来商定服务器真实性的文件。
答案 2 :(得分:6)
HTPS是新的HTTPS。 HTTPS极易受到SSL剥离/ MITM(中间人)的攻击。 引用亚当朗格的(谷歌)博客帝国紫罗兰:
“HTTPS往往会导致人们提出模仿证书安全性及其周围生态系统的讨论。”
问题是该页面不是通过HTTPS提供的。本来应该是,但是当用户在浏览器中键入主机名时,默认方案是HTTP。服务器可能会尝试将用户重定向到HTTPS,但该重定向是不安全的:MITM攻击者可以重写它并使用户保持HTTP,从而欺骗真实站点。攻击者现在可以截获这个完美配置好的安全网站的所有流量。
这称为SSL剥离,它非常简单且具有破坏性。我们可能不经常看到它,因为它不是公司代理需要做的事情,所以它不是现成的设备。但这种喘息不太可能持续很长时间,也许它已经结束了:我们怎么知道它是否被使用?
为了阻止SSL剥离,我们需要将HTTPS作为唯一的协议。我们无法为整个互联网做到这一点,但我们可以通过HTTP严格传输安全(HSTS)逐站进行。
HSTS告诉浏览器始终通过HTTPS向HSTS站点发出请求。网站通过内置到浏览器或通过标题标题成为HSTS:
严格 - 运输 - 安全:max-age = 8640000; includeSubDomains
标题在指定的秒数内有效,也可能适用于所有子域。必须通过干净的HTTPS连接接收标头。
一旦浏览器知道某个网站只是HTTPS,输入mail.google.com的用户就是安全的:初始请求使用HTTPS并且攻击者无法利用它。
(mail.google.com和其他一些网站已经作为HSTS网站内置在Chrome中,因此实际上无法通过HTTP访问使用Chrome的accounts.google.com - 我不得不对该图片进行处理!如果您需要要包含在Chrome的内置HSTS列表中,请发送电子邮件给我。)
HSTS还可以保护网站管理员免于犯下愚蠢的错误。让我们假设您告诉您的母亲,她应该在去她的银行网站之前输入https://或者为她设置一个书签。说实话,我们可以或者应该期望我们的用户。但是,让我们说我们的超级用户......]
由于阻止/非常愚蠢的链接规则为stackoverflow上的新用户我无法给你adam的答案,你将不得不访问adam langley的博客自己 https://www.imperialviolet.org/2012/07/19/hope9talk.html
“Adam Langley适用于Google的HTTPS服务基础架构和Google Chrome的网络堆栈。”
答案 3 :(得分:1)
HTTPS是一种应用层协议。它可以通过数字签名提供对个别请求或响应的不可否认性。
SSL是较低级别的协议,但没有此功能。 SSL是传输级加密。
HTTPS比SSL更灵活:应用程序可以配置所需的安全级别。 SSL的选项较少,因此更易于设置和管理。