首先附上证书转换的方法,如下:
-
在服务器人员,给你发送的crt证书后,进到证书路径,执行下面语句
$openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der
这样你就可以得到cer类型的证书了,并双击导入电脑 -
证书放入工程 :
2.1 可以直接把转换好的cer文件拖动到工程中
2.2 可以在钥匙串内,找到你导入的证书,单击右键,导出项目,就可以导出.cer文件的证书了
以上资料参考:https://blog.csdn.net/st646889325/article/details/53856833
以下使用通俗一点的名称作假设:
公钥 可以理解为 保险柜,用于加密数据
私钥 可以理解为 解锁密码,用于解密获取数据
只有对应的 私钥 才能打开 公钥 ,服务端的 公钥+私钥 是成一对存在。
客户端生成的随机数 ,这个东西是具有加密、解密 功能。
完成以上 .crt 转换 .cer 并导入到工程之后,工程(客户端)上已经有 服务端的保险柜 了,因为它是从这个 .cer 证书里取出来的。
非对称加密
1.当 客户端 发起请求时,会生成一个随机数,并备份在本地存有一份;然后利用 服务端的保险柜 锁着这个随机数 并发送过去 服务端
2.服务端 收到之后,使用只有自己知道的 解锁密码 去打开并获得 客户端生成的随机数; 此时双方都持有了这个 随机数
此传输过程就是 非对称加密,这种方式在传输工程中如果遭到了第三方hook也不会有影响,因为保险柜必须解锁才能知道里面装得是什么东西,然而这个解锁密码 就只有 服务端 知道。
对称加密
经过上述的非对称加密之后, 客户端 与 服务端 都持有了相同的 随机数。
当建立连接传输数据的时候,会使用这个 随机数 对数据进行加密,接收数据的一方再用 随机数 进行解密获得。
以下附上 TCP三次握手 的相关资料:
https://baijiahao.baidu.com/s?id=1614404084382122793&wfr=spider&for=pc
https://www.zhihu.com/question/24853633?sort=created
以上内容纯粹个人见解,仅用于分享交流,如有描述不当之处,欢迎指出。
网友评论