我对这方面的术语感到困惑。什么是SSL,TLS和HTTPS?它们之间有什么区别?

评论

有关对不同SSL和TLS版本的站点支持的调查,请参阅trustworthyinternet.org/ssl-pulse/#chart-protocol-support。

2014年12月:预计SSL支持现在会迅速下降,它已被POODLE不可挽回地破坏了。浏览器已将其删除(立即使用Firefox,谨慎使用Chrome,部分使用Internet Explorer)

#1 楼

TLS是SSL的新名称。即,SSL协议版本为3.0; TLS 1.0是“ SSL 3.1”。当前定义的TLS版本包括TLS 1.1和1.2。每个新版本都添加了一些功能并修改了一些内部细节。我们有时会说“ SSL / TLS”。

HTTPS是SSL / TLS内的HTTP。 SSL(TLS)为两个主机之间的任意二进制数据建立了一个安全的双向隧道。 HTTP是用于发送请求和接收答案的协议,每个请求和答案都由详细的标头和(可能)某些内容组成。 HTTP旨在通过双向隧道运行以获取任意二进制数据。如果该隧道是SSL / TLS连接,则整体称为“ HTTPS”。

为解释首字母缩写词:


“ SSL”表示“安全”套接字层”。该协议的发明者是Netscape(该协议后来被AOL收购)的发明者所创造。
“ TLS”表示“传输层安全性”。更改名称以避免Netscape出现任何法律问题,因此该协议可以是“开放和免费的”(并以RFC形式发布)。它还暗示了该协议可以在任何双向字节流上工作,而不仅仅是基于Internet的套接字。除了极度厌烦的学徒以外,没有人使用过翻译。最好将“ HTTPS”视为“带有S的HTTP,表示SSL”。其他协议首字母缩略词也以相同的方式构建,例如SMTPS,IMAPS,FTPS ...它们都是一种裸协议,通过在某些SSL / TLS中运行它可以“确保安全”。


评论


为了使混淆更加完美:SSL(安全套接字层)通常是指旧的协议变体,该变体立即从握手开始,因此需要用于加密协议的另一个端口(例如443)而不是80。TLS(传输层安全性)通常是指到新的变体,该变体允许从未加密的传统协议开始,然后发出命令(通常为STARTTLS)来初始化握手。

–亨德里克·布鲁默曼
2011年7月10日17:23



SSL不再存在。有TLS 0.9,对于疯狂的TLS版本-0.1。

–卦图
2011年7月11日在2:03

不要通过提及STARTTLS来混淆问题! TLS和SSL提供可用于通过其发送任何协议的通用安全连接:当HTTP协议通过TLS或SSL发送时,称为HTTPS。 STARTTLS功能仅在SMTP电子邮件交换协议中可用,与HTTP或HTTPS无关。 TLS和SSL对STARTSSL命令一无所知。 TLS和SSL总是从握手开始,以建立安全连接。

–Hoylen
2014-3-28的0:36

如果TLS和SSL本质上是同一件事,那么在Outlook中设置电子邮件帐户时,加密选项是SSL还是TLS呢?

– Celeletas
2014年5月30日23:45

对于SMTP和IMAP,有两种使用SSL的方法:一种类似于HTTPS(以SSL开头,在隧道内使用纯协议),另一种使用STARTTLS命令(以纯协议开头,以及然后在协商后切换到SSL)。客户端必须事先知道要做什么(特别是因为两种方法都不使用相同的端口:IMAP + STARTTLS为143,IMAP-within-SSL为993)。作为混淆的一般霸主,Microsoft决定将这两种方法称为“ SSL”和“ TLS”。

–托马斯·波宁(Thomas Pornin)
2014年5月31日上午10:18

#2 楼

SSL和TLS是旨在在两方之间提供隐私和数据完整性的协议(请参阅RFC 2246),旨在在可靠的通信协议(通常为TCP)上运行。尽管TLS规范没有涉及套接字,但已完成SSL / TLS的设计,以便应用程序几乎可以像传统的TCP套接字一样使用它们,例如Java中的SSLSocket扩展了Socket(尽管在可用性方面有一些细微差别) 。

HTTPS是基于SSL / TLS的HTTP,首先建立SSL / TLS连接,然后通过该SSL / TLS连接交换普通的HTTP数据。
是否使用SSL或TLS取决于浏览器和服务器的配置(通常有一个选项允许SSLv2,SSLv3或TLS 1.x)。
有关RFC中HTTP和SSL / TLS形成HTTPS方式的详细信息2818.关于SSL和TLS之间的区别,您可能会对我为在StackOverflow和ServerFault上针对这些类似问题而写的以下两个答案感兴趣:
在SSL和TLS之间[Stackoverflow]
SSL和TLS之间的确切协议级别差异是什么? [Serverfault]


您可以将TLSv1.0视为SSLv3.1(实际上就是在交换的记录中发生的事情
)。将TLSv1.0
与TLSv1.1和TLSv1.2进行比较将更加容易,因为它们都是在IETF
中进行了编辑,并且遵循或多或少都采用相同的结构。 SSLv3由另一个机构(Netscape)编辑,这使它变得更加困难,因此要找出这些差异。

这里有一些差异,但是我怀疑我可以全部列出它们:


在ClientHello消息(客户端发送的第一条消息,以启动握手)中,SSLv3的版本为{3,0},{3,1}对于
TLSv1.0和{3,2}对于TLSv1.1。
ClientKeyExchange不同。
MAC / HMAC不同(TLS使用HMAC,而SSL使用HMAC的早期版本)。
密钥派生不同。
在SSLv3中发送SSL / TLS完成消息后,客户端可以发送应用程序数据,可以直接发送。在TLSv1中,它必须等待
等待服务器的完成消息。 />关于新的重新协商扩展,也存在差异。




通常,如果您选择的版本或SSL / TLS越高,则它越安全。您的密码套件也正确(较高版本的TLS还提供使用被认为更好的密码套件)。 (SSLv2被认为是不安全的。)此外,SSL也不属于IETF范围。例如,必须为SSLv3改造TLS重新协商修复程序(尽管无论如何必须更新SSL / TLS堆栈)。

您可能对此答案也感兴趣:


当建立TLS / LDAP或TLS / HTTP连接时,网络上会发生什么?[Stackoverflow]

请注意,有些人反对SSL和TLS,因为“ SSL”与“ / TLS(连接后)和“升级到TLS”(使用应用程序协议进行一些对话之后)。尽管其中一些答案相对较高,但这是不正确的。当某些应用程序(例如Microsoft Outlook)确实表示“连接时SSL / TLS”和“升级到TLS”时,它们为SMTP / IMAP配置提供了两个名为“ SSL”和“ TLS”的配置选项,这一事实引起了这个错误。 (我认为JavaMail库也是如此。)

谈论STARTTLS的RFC是在TLS已经是官方RFC时编写的,这就是为什么他们只谈论将连接升级到TLS的原因。实际上,如果您调整邮件客户端的配置以强制其使用SSLv3而不是TLS(我通常不建议这样做),那么仍然可以使用带有SSLv3连接的STARTTLS升级到SSL / TLS因为它比SSL / TLS和/或密码套件的版本更重要的是关于操作模式。

还有HTTP的一种变体,其中升级到SSL / TLS是在HTTP协议中完成的(类似于LDAP / SMTP中的STARTTLS)。 RFC 2817中对此进行了描述。据我所知,它几乎从未使用过(并且不是https://在浏览器中所使用的)。该RFC的主要相关部分是有关HTTP代理服务器的CONNECT的部分(HTTP代理服务器用于中继HTTPS连接)。

评论


RFC 2817在实践中不使用,因为它与HTTPS客户端的内部结构过于混乱。相反,客户端现在使用“服务器名称指示”来解决相同的问题,即在服务器发送其证书之前公布预期的服务器名称(这是用于虚拟主机); SNI是客户端在TLS握手开始时添加的扩展。

–托马斯·波宁(Thomas Pornin)
2011年7月11日在12:04

@Thomas,同意,但有所不同。 HTTPS(我们使用)和RFC 2817之间的关系与SMTPS和STMP + STARTTLS之间的关系相同。确实,它解决的问题之一是与SNI相同的问题,但我认为当时对此的需求较少,并且支持RFC 2817的客户端/服务器从未真正起飞。确保URI明显是https://(可以说使其更安全吗?)似乎一直是保持明确区分(而不是透明升级)的理由,即AFAIK。这里也有讨论:ietf.org/mail-archive/web/tls/current/msg01096.html

–布鲁诺
2011年7月11日13:00

您通过TLS编写SSLv3,这是某种类型的输入错误吗?你什么意思?据我了解,这些版本类似于SSL v1 SSL v2 SSL v3 TLS v1.0 TLS v1.1 TLS v1.2可以说在TLS上使用SSLv3就像在Windows 7上使用Windows 98。你什么意思?

– barlop
2014-10-20 13:03



@barlop抱歉,它的措词确实不好,我的意思是“代替”。

–布鲁诺
14-10-20在13:38

#3 楼

SSL VS TLS

SSL和TLS术语经常互换使用或彼此结合使用(TLS / SSL),但实际上是另一个术语的前身-SSL 3.0成为了SSL的基础TLS 1.0(有时也称为SSL 3.1)。

更安全的SSL或TLS

在安全性方面,它们都被认为是同等安全的

主要区别在于,虽然SSL连接从安全性开始并直接进行安全通信,但TLS连接首先以对服务器的不安全“打招呼”开始,并且在服务器之间的握手后才切换到安全通信。客户端和服务器成功。如果TLS握手由于任何原因失败,则永远不会创建连接。

(SSL和TLS与HTTP相比)

HTTP协议用于请求和接收数据和https其中的“ s”不过是安全的SSL,它使http协议请求和接收活动进行加密,因此中间人攻击者无法轻松获取数据。 br />
,那么您与Web服务器的连接未加密,所有中间人攻击者都可以获取并查看该数据的所有内容均以纯文本格式发送。

因此应使用SSL或TLS

两者相同,但是TLS更具可扩展性,希望在将来获得更多支持。
TLS向后兼容。

评论


抱歉,“-1”表示“主要区别是,尽管SSL连接始于安全性并直接进行安全通信,但TLS连接首先以不安全的服务器“问候”开始,并且仅在客户端之间握手后才切换至安全通信服务器就成功了。” 。 SSLv3和TLS连接都是通过握手启动的,其握手方式完全相同(均从ClientHello开始)。您可能会混淆SSL / TLS的连接,并通过类似STARTTLS的方式升级到TLS。

–布鲁诺
2011年7月11日在9:17



TLS 1.2最终支持基于SHA-2的HMAC,因此理论上新部署应仅使用TLS 1.2

–休伯特·卡里奥(Hubert Kario)
2011年7月12日在20:53

@Bruno声称初始明文问候是TLS与SSL的区别确实是错误的,但是我怀疑这种困惑不是与SMTP连接升级有关,而是与TLS的服务器名称指示(SNI)扩展有关,由此虚拟服务器主机就是首先以明文形式告知要为其执行握手的主机名(以及扩展名要使用的证书)。因此,对于TLS本身确实是一个错误的主张,但是可能更接近于未遂。

–克里斯·斯特拉顿(Chris Stratton)
17年7月22日在19:47