主要依赖三种加密算法 散列函数hash、非对称加密、对称加密
1. 散列函数验证信息完整性
2. 非对称加密
有公钥和私钥,公钥是公开的,私钥的私密的
公钥和私钥都可以加密和解密,不过必须是对应的公私钥
3. 对称加密 使用的密钥只有一个,发送和接受方都用这个密钥进行加密和解密
加密过程 数据发送方将原始数据和加密密钥一起经过特殊加密处理,生成密文进行传输
解密过程 接收方接收到数据后,则要使用加密使用的密钥以及相同算法的逆算法对加密数据 进行解密
ssl握手过程
1.客户端发送请求到服务器
2.服务端响应客户端,把证书(含有公钥)发送给客户端
3.客户端验证证书的有效性,权威证书已经内嵌到电脑系统,如果有效,客户端会生成随机数(对称密钥),通过证书的公钥进行加密,并把加密后的url和http数据以及对称密钥一起返回给服务器
服务器收到公钥加密的数据后,用私钥解密得到数据和对称密钥,然后把要发送的数据进行对称加密,然后发送给客户端
4.客户端在接收到服务器发送的数据时,用对称密钥进行解密
大概意思就是,当请求服务器的时候,服务器把含公钥的证书发给你(非对称),然后你验证是否有效,有效就会生成对称密钥(对称),然后用服务器发送给你的公钥(非对称)把要提交的数据加密再发送到服务器(个人觉的把对称密钥也给加密了,安全点)。服务器就用私钥(非对称)解密得到数据和密钥(对称),然后把要发送的数据进行对称加密,然后发送给客户端。感觉越说越糊涂、
ssl防止中间人攻击(面试可可能会问)
服务器端对请求它的客户端要进行身份验证,客户端对自己所请求的服务器也会做身份验证。服务端一旦验证到请求自己的客户端为不可信任的,服务端就拒绝继续通信。客户端如果发现服务端为不可信任的,那么也中止通信