https
加密概念
对称加密:使用相同的密钥进行加密解密,快,但密钥管理困难
非对称加密:使用公钥进行加密,使用私钥进行解密,安全性好,但是加解密比较慢
HTTPS使用 对称加密和非对称加密的结合体
- 通信建立前使用非对称加密交换会话密钥,即**证书验证阶段**。后续就不在使用非对称加密
- 在通信过程中全程使用对称加密的 会话加密 的方式加密明文数据
HTTP和HTTPS区别
HTTP是超文本传输协议,明文传输,安全性比较低
HTTPS 则解决HTTP不安全的缺陷,在TCP和HTTP之间加入了SSL/TLS安全协议,使得报文能加密传输
HTTP连接建立相对简单,三次握手后便可以进行HTTP报文的传输。而HTTPS则还需要进行SSL/TLS的握手过程。才可以进行加密报文的传输

两者的端口不一样,HTTP的默认端口是80,而HTTPS是443
HTTPS协议是需要向CA申请数字证书的,来保证服务器的身份是可信的,同时获取服务器公钥
CA证书验证过程
服务器将它的公钥等原始信息打包起来,用hash算法生成一个信息摘要,然后CA对这个信息摘要进行私钥加密,生成数字签名。 数字签名 = 私钥加密( hash(公钥) )
原始信息和数字签名一起打包进来,生成数字证书,然后由CA颁发给服务器

以上是服务端申请证书的流程,以下是客户端如何拿到证书

客户端请求服务端后,会拿到证书,然后通过证书的公钥解密数字签名,得到第一份信息摘要,然后通过hash算法对原始内容进行运算,得到第二份信息摘要,通过比较两份信息摘要,就可以知道这个数字证书可不可靠(因为是用公钥解密),且有没有被更改(因为更改的话,hash后的值就会变化)
证书内容:

过程:

数据传输过程
随机数加解密这个过程就是 非对称的

随机数就相当于密钥了,服务端和客户端都会存一份,且不会在网络中传输,也就不会被网络劫持拿到
代码模拟
HTTPS如何优化
协议优化: