SSL、TLS和HTTPS之间有什么区别?

我对这个领域的术语感到困惑。什么是SSL、TLS和HTTPS?它们之间有什么区别?

解决办法

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

HTTPS是HTTP-within-SSL/TLS。SSL(TLS)为两个主机之间的任意二进制数据建立了一个安全的双向隧道。HTTP是一个发送请求和接收答案的协议,每个请求和答案都由详细的头信息和(可能)一些内容组成。HTTP旨在通过双向隧道运行任意二进制数据;当该隧道是一个SSL/TLS连接时,则整个被称为"HTTPS" 。

为了解释这些首字母缩写。

  • SSL"指的是安全套接字层"。这是该协议第一个版本的发明者Netscape(该公司后来被AOL收购)所创造的。
  • "TLS"是指"传输层安全"。改名是为了避免与网景公司的任何法律问题,以便该协议可以是"开放和自由的"(并作为RFC发布)。它还暗示了一个想法,即该协议可以在任何双向的字节流上工作,而不仅仅是基于互联网的套接字。
  • "HTTPS"应该是指"超文本传输协议安全",这在语法上是不通的。除了极度无聊的学者,没有人使用这个翻译;"HTTPS"最好被认为是"HTTP加一个S,意思是SSL"。其他协议的缩写也是如此,例如SMTPS、IMAPS、FTPS......所有这些都是通过在SSL/TLS中运行而获得安全保障的裸协议。
评论(8)

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)。 关于HTTP和SSL/TLS如何形成HTTPS的细节,见RFC 2818。 关于SSL和TLS的区别,你可能对我在StackOverflow和ServerFault上为这些类似问题写的这两个答案感兴趣。

  • SSL和TLS的区别[Stackoverflow]
  • SSL和TLS之间确切的协议级别差异是什么?[Serverfault]

    你可以把TLSv1.0看作是SSLv3.1(事实上,这也是发生在 内交换的记录)。)只是将TLSv1.0与TLSv1.0进行比较更容易些 与TLSv1.1和TLSv1.2进行比较,因为它们都是在IETF内部编辑的。 并遵循或多或少相同的结构。SSLv3是由一个 不同的机构(Netscape)编辑,这使得它更难发现 发现差异。

    这里有一些区别,但我怀疑我是否能把它们全部列出来。

    *在ClientHello消息(客户端发送的第一条消息,用于启动握手)中,SSLv3的版本是{3,0},{3,1}为 TLSv1.0和TLSv1.1的{3,2}。

    • ClientKeyExchange不同。
    • MAC/HMAC不同(TLS使用HMAC,而SSL使用早期的HMAC版本)。
    • 密钥的衍生不同。 在SSLv3中,客户端可以在发送SSL/TLS完成消息后直接发送应用数据。在TLSv1中,它必须等待 等待服务器的 "完成 "消息。
    • 密码套件的列表不同(其中一些已经从SSL*重新命名为TLS*,保持相同的ID号)。
    • 关于新的重新协商扩展也有不同。 一般来说,SSL/TLS的版本越高,就越安全,只要你也能正确选择你的密码套件(TLS的高版本也提供使用被认为更好的密码套件)。(SSLv2被认为是不安全的。) 此外,SSL不属于IETF的范围。例如,TLS重新协商修复不得不为SSLv3进行改造(尽管SSL/TLS堆栈无论如何都要进行更新)。 你可能对这个答案也感兴趣。
  • 当建立TLS/LDAP或TLS/HTTP连接时,电线上会发生什么?[Stackoverflow] 。 请注意,有些人反对SSL和TLS,认为这是"连接时的SSL/TLS"和"升级到TLS"(在使用应用协议的一些对话之后)的区别。尽管这些答案中有一些是相对较高的支持率,但这是不正确的。这个错误是由以下事实传播的:某些应用程序,如微软的Outlook,为SMTP/IMAP配置提供了两个名为"SSL"和"TLS"的配置选项,而他们真正的意思是"连接时的SSL/TLS"和"升级到TLS"。(我想,JavaMail库也是如此)。) 谈到STARTTLS的RFC是在TLS已经是官方RFC的时候写的,这就是为什么他们只谈到了升级连接到TLS。在实践中,如果你调整你的邮件客户端的配置,强迫它使用SSLv3而不是TLS(我一般不推荐这样做),它仍然有可能使用SSLv3连接的STARTTLS升级到SSL/TLS,这只是因为它更多的是关于操作模式而不是SSL/TLS的版本和/或密码套件。 还有一种HTTP的变体,即在HTTP协议中完成对SSL/TLS的升级(类似于LDAP/SMTP中的STARTTLS')。这在[RFC 2817][5]中有描述。据我所知,这几乎从未被使用过(而且它不是浏览器中https://`所使用的东西)。这个RFC的主要相关部分是关于HTTP代理服务器的 "CONNECT "部分(HTTP代理服务器用它来转发HTTPS连接)。
评论(4)

SSL VS TLS

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

SSL和TLS哪个更安全

在安全方面,它们都被认为是同样安全的。

主要区别在于,SSL连接从安全开始,并直接进入安全通信,而TLS连接首先从对服务器的不安全的 "你好 "开始,只有在客户端和服务器之间的握手成功后才切换到安全通信。如果TLS握手因任何原因而失败,连接就不会被建立。

(SSL和TLS vs HTTP)

HTTP协议用于请求和接收数据,而https中的's'只不过是安全的SSL,它使http协议的请求和接收活动被加密,因此没有中间人攻击者可以轻易获得数据。

如果SSL或TLS都不用于HTTP

那么你与网络服务器的连接是不加密的,所有的数据将以明文形式发送,任何中间人攻击者都可以获得和查看这些数据。

所以应该使用SSL或TLS

两者都一样,但TLS的扩展性更强,希望将来能得到更多的支持。 而且TLS是向后兼容的。

评论(3)