【发布时间】:2020-08-20 16:16:24
【问题描述】:
我正在尝试构建具有以下一般要求的客户端/服务器 servlet 应用程序:
- 客户端和服务器都嵌入了码头;
- 服务器公开一个servlet,以便通过
POST接收json数据; - 连接必须通过 SSL 保护(即连接将通过互联网通过 https 完成);
- 我希望只有我的 Jetty 客户端能够将数据发送到我的服务器,所有其他暂定必须被服务器拒绝;
- 服务器和客户端是无人值守的机器(即不能通过命令行输入密码);
- 没有明文密码必须存储在客户端设备上。一般来说,我不希望有人打开远程客户端设备并窃取密码并构建一个能够向我的服务器发送数据的假远程设备。
我已经通过HTTP 构建了一个完美运行的客户端/服务器应用程序,但我对安全性感到困惑。
我已经读到有可能使用客户端/服务器相互身份验证,这似乎是我正在寻找的,但我无法获得完整的画面。
在此文档client-certificate-authentication 中,关于如何构建共享可信 CA 或多或少有清晰的说明,但访问TrustStore 和KeyStore 的密码在代码中是明确的。
我想我在拼图中错过了一块瓷砖。
有人能指出我正确的方向吗?
谢谢,
S.
【问题讨论】:
-
你在这里问了很多问题。如何确保只有我的客户端可以交谈,如何做 SSL/TLS 客户端证书,如何保护客户端证书详细信息等。这需要一段时间才能回答。
标签: java ssl jetty keystore truststore