【发布时间】:2020-11-29 08:50:34
【问题描述】:
我想在我的服务器和客户端之间设置安全交互,并且我想避免发明方轮。
- SpringBoot 中有一个“REST-Server”
- 服务在某处安装了许多 Java 中的“REST 客户端”。我无法控制它。
- “REST-Server”为每个(!)客户端生成公钥/私钥对,并与客户端共享公钥
- 每个“REST 客户端”都会生成自己的公钥/私钥对,并与“REST 服务器”共享公钥。客户共享其公钥和唯一 ID。
- “REST-clients”不时轮询“REST-server”
- “REST-client”从以下位置发送请求:
-
clientId(帮助“REST-Server”找到正确的客户端发布密钥来解密消息) -
payload使用分配给给定客户端的“REST-Server”公钥编码 -
original message SHA所以“REST-Server”可以验证有效载荷是否被正确解密 -
client signature使用客户端的私钥创建,因此服务器可以验证消息是否来自授权客户端
-
“REST-服务器”
-
通过“uniqieId”定位与客户端关联的私钥
-
使用 SHA 解密和验证
-
使用
client signature和已知客户的公钥验证发件人 -
“REST-server”以表单形式发送响应
-
payload用“客户”的公钥编码 -
original message SHA所以“客户端”可以验证有效载荷是否被正确解密
-
“REST-client”使用自己的私钥解密响应。
是否有任何库/spingboot 扩展可以完成大部分工作?
【问题讨论】:
-
标准响应:只使用 SSL/TLS
-
什么是 2-way SSL...你是对的。问题解决了。
标签: spring-boot security public-key-encryption encryption-asymmetric