Http(HyperText Transfer Protocol):超文本传输协议
Https(HyperText Transfer Protocol Secure):安全的超文本传输协议
从名字就可以看出来:两者的区别在于Secure 换句话说 Https是安全的http。Http和https具体的差别在于以下哪个方面:
1Http是明文传输,数据未经过加密,客户端和服务器之间无法进行身份认证,安全性较差,Https数据传输过程是加密的,客户端与服务器之间可以进行身份认证,安全性好。
2Http不需要证书 Https需要证书。
3Http直接面向TCP ,使用TCP三次握手建立连接,Https直接面向TLS,通过TLS进行安全连接 然后TLS面向TCP ,这使得HTTP页面的响应速度比HTTPs快。
4同样的原因,HTTPS比HTTP更加耗费资源。
上文提到的TLS。这是HTTPS提升安全性的关键。小伙伴们可能听得更多的是SSL。二者的关系如下:
SSL(Secure Socket Layer)安全套接层。
TLS(Transport Layer Security)传输层安全性协议,是基于SSL3.0设计的协议。
TLS实现安全性的机制涉及到了密码学的一些基础知识,它采用了RSA握手和密钥交换来进行实现。
具体而言握手阶段涉及四次通信,握手阶段的所有通信都是明文的。
客户端发出请求(ClientHello):
客户端先向服务器发出ClientHello请求,主要向服务端提供以下信息:支持的加密通信协议版本;随机数A(客户端生成);支持的加密方法;支持的压缩方法
服务端回应(SeverHello),
服务端向客户端发出SeverHello回应,包含以下信息:确认使用的加密通信协议版本;随机数B(服务端生成);确认使用的加密方法;服务端证书
客户端回应,客户端验证服务端证书。如果验证未通过,则会向访问者发出警告。否则,客户端从证书中取出服务端的公钥。然后向服务端发送以下信息:经过服务端公钥加密的随机数C;编码改变通知;客户端握手结束通知(通信参数的hash值,可供服务端校验)
服务器的最后回应,服务器生成会话密钥。然后,向客户端发送以下信息:编码改变通知;服务器握手结束通知(通信参数的hash值,可供客户端校验)