http存在哪些问题:
1.不对通信方做确认
2.无法保证信息传输的安全(无法确认完整度且是明文),说明不能保证完整度,数据就有可能被修改
https的处理(SSL层处理):
- 1 通过数字证书保证服务器安全
- 2 加密
数字证书的验证:
1.客户端访问,服务端将公钥证书发送过来客户端
2.此时客户端开始验证证书
验证细节:
- 服务器的运营人员向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;
- CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
- 如信息审核通过,CA会向申请者签发认证文件-证书。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构
CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名。其中签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用
CA的私钥对信息摘要进行加密,密文即签名; - 客户端 Client 向服务器 Server 发出请求时,Server 返回证书文件;
- 客户端 Client 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应
CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即服务器的公开密钥是值得信赖的。 - 客户端还会验证证书相关的域名信息、有效时间等信息; 客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应
CA的证书,证书也会被判定非法。
一句话总结:客户端会用本地公钥去验证server端发送的证书的合法性.
2.会话加密
- 这里client端用伪随机函数生成器生成对称密钥,然后用公钥加密,发给server端
- server端通过私钥解密,获取对称密钥
- 后续就用对称秘钥去相互交流了.
这里用到的算法,伪随机函数生成,hash散列,不对称加密(RSA)算法,对称加密(如 AES)算法.
引用文章:
来源:CSDN
作者:love4amanda
链接:https://blog.csdn.net/love4amanda/article/details/90375045