我对这个领域的术语感到困惑。什么是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和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上为这些类似问题写的这两个答案感兴趣。
SSLSocket
Socket
你可以把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堆栈无论如何都要进行更新)。 你可能对这个答案也感兴趣。
你可以把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}。
STARTTLS')。这在[RFC 2817][5]中有描述。据我所知,这几乎从未被使用过(而且它不是浏览器中
SSL和TLS这两个术语经常互换使用,或者相互结合使用(TLS/SSL),但实际上一个是另一个的前身--SSL 3.0是TLS 1.0的基础,因此有时被称为SSL 3.1。
在安全方面,它们都被认为是同样安全的。
主要区别在于,SSL连接从安全开始,并直接进入安全通信,而TLS连接首先从对服务器的不安全的 "你好 "开始,只有在客户端和服务器之间的握手成功后才切换到安全通信。如果TLS握手因任何原因而失败,连接就不会被建立。
HTTP协议用于请求和接收数据,而https中的's'只不过是安全的SSL,它使http协议的请求和接收活动被加密,因此没有中间人攻击者可以轻易获得数据。
那么你与网络服务器的连接是不加密的,所有的数据将以明文形式发送,任何中间人攻击者都可以获得和查看这些数据。
两者都一样,但TLS的扩展性更强,希望将来能得到更多的支持。 而且TLS是向后兼容的。
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和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上为这些类似问题写的这两个答案感兴趣。STARTTLS')。这在[RFC 2817][5]中有描述。据我所知,这几乎从未被使用过(而且它不是浏览器中
https://`所使用的东西)。这个RFC的主要相关部分是关于HTTP代理服务器的 "CONNECT "部分(HTTP代理服务器用它来转发HTTPS连接)。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是向后兼容的。