1、Https
- HTTPS = HTTP + SSL,其中 SSL 指安全协议,其内部有包含 CA 证书申请认证等。
- HTTPS 端口为 443,加密传输更安全。
2、两种加密
- 我们都知道 https 相对于 http 来说增加的是安全性,那么如何增加安全性呢?其实无非就是增加了加密和解密的过程。
- 对称加密:这种加密方式比较简单,就是双方都持有密匙。客户端和服务端都持有密匙,服务端通过密匙加密明文传递给客户端,客户端获取加密后的信息,用密匙解密信息。优势:加密速度快。劣势:密匙的传递是个问题,容易被截取,密匙一旦被截取后,就能轻易破解信息。对称加密的代表算法有:AES、DES 等。
- 非对称加密:非对称加密中,客户端和服务端都有自己的公钥和私钥。公钥是公开的,私钥是私有的,私钥需要保密的。这套公钥和私钥的有个两种加密解密流程:用公钥加密的信息,用私钥才能解密。因为私钥是私有的,这种流程用于信息的加密解密;用私钥加密信息,用公钥来解密。因为公钥是共有的,这种流程用于认证。
- 在 https 中信息传递的密匙的传递是采用非对称加密传递的。客户端需要把信息传递给服务端,需要分几步。(1)客户端请求服务端,服务端把自己的公钥传递给客户端。(2)客户端用服务端的公钥把信息加密后传递给服务端,服务端用自己的私钥解密获取信息。(3)服务端使用私钥加密要传递给客户端的信息,客户端收到信息后使用公钥解密。
3、常见的加密算法
- 对称加密:AES、DES 等。
- 非对称加密的代表算法有:RSA、ElGamal 等。
4、对称加密和非对称加密的联合使用
- 使用对称加密在服务端传递秘钥给客户端时,可能会导致秘钥暴露,进而暴露传递的信息。
- 使用非对称加密,只能保证客户端发送给服务端的信息是安全的,无法确切保证服务端传递给客户端的信息是否安全。
- (1)首先客户端向服务度请求公钥信息,服务端传递公钥给客户端。
- (2)然后客户端生成对称加密的秘钥,然后再使用公钥对此秘钥进行加密,然后把信息传递给服务端。
- (3)服务端拿到信息后,使用私钥去进行解密,从而得到秘钥,然后此后其返回给客户端的信息都先通过该秘钥进行加密,然后再进行传递。
- (4)客户端得到信息后,再通过秘钥进行解密,最后得到真实的数据。其后续给服务端传递的信息也同样使用该秘钥进行加密后传输。
5、为什么不把公钥秘钥直接写到客户端本地呢?
- 如果直接写死在客户端本地,就无法动态更新了,假设某开发者离职,他知道公钥私钥秘钥和对应的加密算法,这个时候就会导致信息泄露的可能性。
- 那么如果使用服务端在首次建立通信的时候进行传递公钥或私钥信息给客户端,那么客户端就能够对此进行动态更新,哪怕上面哪位离职的员工知道加密算法,也无法破解器加密的信息,因为他不并不知道私钥或秘钥,从而更进一步提升安全性。
6、加解密过程
- (1)客户端访问 https 开头的 url。
- (2)服务端返回公钥1,客户端验证通过(如果不通过,则访问终断)。
- (3)客户端根据公钥1生成一个私钥2,这个私钥2用来加密和解密请求信息。使用公钥1对私钥2进行加密,回传给服务端。服务端用私钥1对该信息解密,得到私钥2。至此,客户端和服务端都已经有了私钥2。
- (4)客户端和服务端之间使用私钥2对信息进行加密后通信,这样即使第三方抓包,也无法轻易获取通信内容了。
7、HTTP 和 HTTPS 的区别?
- HTTPS 就是在 HTTP 的基础上新增了一个 SSL 的安全层,所以 HTTP 是不安全的,而 HTTPS 是安全的。
- HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头。
- HTTP 标准端口是 80,而 HTTPS 的标准端口是 443。
- 在 TCP/IP 五层模型中,HTTP 工作于应用层,而 HTTPS 的安全传输机制工作于传输层。
- HTTP 本身无法加密,而 HTTPS 对传输的数据进行加密。
- HTTP 无需证书,而 HTTPS 需要 CA 机构颁发的 SSL 证书。
了解:SSL 证书与 CA 证书的区别?
SSL 证书是 CA 证书中的一种。CA 是数字证书管理机构,CA 机构颁发的证书类型比较多,只要是 CA 机构颁发的都属于 CA 证书,而 SSL 证书只是其中一种。
SSL 证书能够保障浏览器跟服务器之间信息传输安全,能够保证传输数据稳定跟完整。一个有效、可信的 SSL 数字证书包括一个公共密钥和一个私用密钥。公共密钥用于加密信息,私用密钥用于解译加密的信息。