[英]Jetty client / server mutual authentication
我正在尝试使用这些一般要求构建客户端/服务器 servlet 应用程序:
POST
接收 json 数据; 我已经通过HTTP
构建了一个完美运行的客户端/服务器应用程序,但我对安全性感到困惑。 我已经读到有可能使用客户端/服务器相互身份验证,这似乎是我正在寻找的,但我无法获得完整的图片。 在本文档client-certificate-authentication中,或多或少清楚地解释了如何构建共享的可信 CA ,但是用于访问TrustStore
和KeyStore
的密码在代码中是明确的。 我想我错过了拼图中的一块瓷砖。 有人能指出我正确的方向吗?
谢谢,
S.
我将给出一个简单的答案(目前)。
如果您只想让您的客户端与服务器通信,那么是的,客户端 SSL/TLS 证书是通往 go 的途径。
您需要将服务器的SslContextFactory.Server.setNeedClientAuth(true)
设置为 true。 这将反过来导致在传入连接建立时设置 Java 的javax.net.ssl.SSLParameters.setNeedClientAuth(true)
。 如果客户端未能提供客户端证书,则关闭连接,并且不会发送或处理任何 HTTP 请求。
至于保护客户端证书,这取决于您,您可以做任何您想做的事情,只要它产生 Jetty 客户端可以访问的有效客户端SslContextFactory.Client
即可。 这包括...
java.security.KeyStore
object 并将其交给SslContextFactory.Client.setKeyStore(KeyStore)
和SslContextFactory.Client.setTrustStore(KeyStore)
方法。 (更好的安全明智,代表你做更多的工作)您可能需要考虑让客户端证书短期(24 小时?)从服务器动态刷新,并在遇到滥用时让客户端证书可撤销(在服务器/CA 端)。 (例如来自多个不同客户端 IP 的相同客户端证书)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.