HTTP和HTTPS

HTTP和HTTPS

HTTP

HTTP报文格式

(1)HTTP 请求报文

HTTP 请求报文包括:请求行(Request Line)、请求头(Request Header)、请求数据(Request Data)、空行四个部分。

https://blog.csdn.net/zx_emily/article/details/83024065

Http缓存

  • 常见端口号(80、443、23等)对应的含义

23:远程登录 Telnet 服务。

80:HTTP服务的端口号

443:HTTPS服务的端口号

HTTPS

SSL

https://www.cnblogs.com/jesse131/p/9080925.html

对称加密:发送和接收用同一个秘钥加解密。
非对称加密:发送方用公钥加密,接收方用私钥解密。

发送方发送一个协议版本号和一个随机数,以及客户端支持的加密算法。
接收方选择一个公钥,并给出数字证书以及一个新的随机数。
发送方确认证书有效,使用接收到的公钥发送一个新的随机数
接收方用私钥解密随机数,并使用之前的三个随机数生成一个对话秘钥,用这个秘钥加密接下来的整个会话数据。

HTTPS流程

客户端访问HTTPS请求,连接到Server的443端口
Server回应证书和公钥
客户端TLS验证公钥,如果有异常则弹出警告提示
客户端根据证书查找本地对应的证书,如果找不到,说明证书不可信。
如果找到了,取出本地证书对应的公钥,对Server发来的证书的签名进行解密。
客户端使用hash算法计算Server传来的证书的Hash值,并和解密出来的证书中的签名作对比。
如果一致,说明公钥没有被替换,则可以用该公钥继续后面的加密会话了。
客户端用公钥加密一个随机数,发送给服务端。
Server使用私钥解密随机值,然后将会话数据通过该值进行对称加密。
客户端可以同样用之前生成的随机值解密Server发过来的数据。
整个过程,即使被第三方监听,也无法改变。