参考链接:
https://blog.csdn.net/JAck_chen0309/article/details/105020259
HTTP与HTTPS的区别
HTTP与HTTPS的区别
安全性上,HTTPS是安全超文本协议,在HTTP基础上有更强的安全性。简单来说,HTTPS是使用TLS/SSL加密的HTTP协议。
申请证书上,HTTPS需要使用ca申请证书。
传输协议上,HTTP是超文本传输协议,明文传输;HTTPS是具有安全性的SSL加密传输协议。
连接方式与端口上,HTTP的连接简单,是无状态的,默认端口是80;HTTPS在HTTP的基础上使用了SSL协议进行加密传输,默认端口是443。
HTTP的工作过程
HTTP由请求和响应构成,是一个标准的客户端服务器模型(C/S)。HTTP协议永远都是客户端发起请求,服务器端返回响应。
- 地址解析。域名系统DNS解析域名得到主机IP。
- 封装HTTP请求数据包。封装的内容由以上部分结合本机自己的信息。
- 封装成TCP包,建立TCP连接(TCP三次握手)。
- 客户端发送请求命令。建立连接后,客户端向服务器发送一个请求。
- 服务器响应。服务器接到请求后,给予响应的相应信息。
- 服务器关闭TCP连接。一般Web服务器向浏览器返回了响应数据,它要关闭连接。
- 客户端解析报文,解析HTML代码,并渲染。
HTTPS的实现原理
HTTP以明文方式传输数据,不能保证数据传输安全。
HTTPS在HTTP的基础上加入了SSL协议。
HTTPS使用SSL协议和TLS协议
SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS的通信过程
HTTPS通信时,首先建立SSL层的连接,客户端将SSL版本号和加密组件发到服务器端,服务器端收到后对SSL版本号和加密组件进行匹配,同时将CA证书以及密钥发送到客户端。客户端对证书进行验证,验证通过后使用非对称加密对数据通信时的密钥进行协商。协商后得到一致的对称加密密钥。然后使用对称加密算法进行TCP连接,后续过程跟http的过程一致。三次握手,数据交换,四次挥手,通信结束。
过程如下:
- 客户端和服务器端通过TCP建立连接
- 客户端向服务器发送HTTPS请求
- 服务器响应请求,并将数字证书发送给客户端,数字证书包括公共密钥、域名、申请证书的公司。
- 客户端收到服务器端的数字证书之后,会验证证书的合法性。
- 如果公钥合格,那么客户端会生成一个进行对称加密的密钥client key,并用服务器的公钥对客户端密钥进行非对称加密。
- 客户端会发送第二个HTTPS请求,将加密之后的客户端密钥发送到服务器。
- 服务器接收到客户端发来的密文之后,会用私钥对其进行非对称解密,得到客户端密钥。并使用客户端密钥进行对称加密,生成密文并发送。
- 客户端接收密文,并使用客户端密钥进行解密,渲染页面。