客户端需要生成一对密钥,服务器需要生成一对密钥,分别记为client_private.pem/client_public.pem和server_private.pem和server_public.pem.
步骤
1. 客户端下载服务器的公钥,server_public.pem;
2. 客户端使用服务器的公钥对数据(data)进行加密;
3. 客户端对数据(data)进行签名计算,再将结果用私有密钥进行加密,得到加密后的摘要签名;
4. 客户端使用加密后的数据和签名结果组合成最终需要传送的数据,传送到服务器。
5. 服务器收到加密数据、数字签名、客户端公钥;
6. 服务器通过自有私钥解密数据,得到明文数据;
7. 服务器通过明文数据计算出数据摘要;
8. 服务器根据客户端的公钥解密客户端的加密数字摘要;
9. 对比计算出来的数据摘要和客户端传送过来的数据摘要,一致,则说明客户端是合法,可以进行下一步数据传输;否则认为不合法,中断连接。