HTTPS 与 HTTP 介绍

HTTPS 与 HTTP 有什么不同?

HTTP 是过去很长一段时间我们经常用到的一种传输协议。HTTP 协议传输的数据都是 未加密的,这就意味着用户填写的密码、帐号、交易记录等机密信息都是明文,随时可能 被泄露、窃取、篡改,被黑客加以利用,因此使 HTTP 协议传输隐私信息非常不安全。

HTTPS 是一种基于 SSL 协议的网站加密传输协议,网站安装 SSL 证书后,使用 HTTPS 加密协议访问,可**客户端浏览器到网站服务器之间的"SSL 加密通道"(SSL 协议),实现 高强度双向加密传输,防止传输数据被泄露或篡改。简单讲 HTTPS=HTTP+SSL,是 HTTP 的 安全版。

什么是 SSL 证书?

SSL 证书就是遵守 SSL 安全套接层协议的服务器数字证书。而 SSL 安全协议最初是由美国网景 Netscape Communication 公司设计开发的,全称为:安全套接层协议 (Secure Sockets Layer) , 它指定了在应用程序协议(如 HTTP、Telnet、FTP)和 TCP/IP 之间提供数据安全性 分层的机制,它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开**技术,它为 TCP/IP 连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。由于此协议很 好地解决了互联网明文传输的不安全问题,很快得到了业界的支持,并已经成为国际标准。SSL 证书由浏览器中“受信任的根证书颁发机构”在验证服务器身份后颁发,具有网站身份 验证和加密传输双重功能。

HTTP三次握手

第一次握手:客户端发送syn(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYNack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

 

HTTPS握手过程

SSL的基本思想是用非对称加密来建立链接(握手阶段),用对称加密来传输数据(传输阶段)。这样既保证了**分发的安全,也保证了通信的效率。

SSL握手,单向服务器认证(一般的浏览器上网)

1. 浏览器发起HTTPS请求

浏览器发送一个连接请求给服务器。 

2. 服务器传送证书

服务器将自己的证书,以及同证书相关的信息(域名、公钥、过期时间)发送给客户浏览器。

3. 浏览器解析证书

客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题警告客户这个证书不是可以信赖的,询问客户是否需要继续。如果证书没有问题,那么就生成一个随即值,然后用证书对该随机值进行加密。

4. 浏览器发送加密信息

浏览器生成一个随机值并使用服务器的公钥进行加密后发送给服务器,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

5. 服务解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

6. 传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

7. 客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。

HTTPS 与 HTTP 介绍

SSL握手,双方认证(类似U盾形式的银行认证系统)
双向认证 SSL 协议的具体过程4-9不同

1. 客户端发起HTTPS请求

客户端发送一个连接请求给服务器。 

2. 服务器传送证书

服务器将自己的证书,以及同证书相关的信息(域名、公钥、过期时间)发送给客户端

3. 浏览器解析证书

客户端检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题警告客户这个证书不是可以信赖的,询问客户是否需要继续。如果证书没有问题,那么就生成一个随即值,然后用证书对该随机值进行加密。

4. 客户端发送证书

客户端将自己的证书,以及证书相关的信息发送给服务器

5. 服务器验证证书

服务器验证客户端发送的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得客户端的公钥。 

6. 客户端通知服务器

客户端告诉服务器所能够支持的通讯对称密码方案

7.服务器使用客户端公钥加密(客户端公钥加密)

服务器从客户端发送过来的密码方案中,选择一种密码方案,客户端的公钥数据进行加密。

8.发送加密消息

服务器将解密后的消息发送给客户端

9.客户端使用私钥解密(客户端私钥解密)

客户端收到消息后使用私钥解密。

10.客户端发送加密信息(服务器端公钥加密

客户端生成一个随机值并使用服务器的公钥进行加密后发送给服务器,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

11. 服务解密信息(服务器私钥解密)

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

12. 传输加密后的信息(对称加密)

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

13. 客户端解密信息(对称解密)

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。

HTTPS 与 HTTP 介绍