gpt4 book ai didi

具有多个 SSL 证书的 Java 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 14:16:57 25 4
gpt4 key购买 nike

我有一个情况,不确定是否有可能的解决方案。

我有一个带有 SSL 套接字和证书“A”和“B”的 Java 服务器。我还有 2 种类型的客户端 - 一种具有证书“A”,另一种具有证书“B”。但是,服务器端只加载了一个证书,因此客户端都带有证书。 “A”可以连接或仅连接具有证书的客户端。 “B”可以连接。

是否可以修改 Java 服务器,使其在来自任何客户端的连接上确定使用哪个证书(A 与 B)并使用适当的证书?

P.S:请原谅我对安全的无知。

谢谢。

最佳答案

可以通过 Server Name Indication (SNI) extension 在同一 IP 地址和端口上使用两个服务器证书。 , 必须客户端和服务端都支持。

Java 在客户端支持这个 since Java 7 .

不幸的是,这在服务器端尚不支持。这是 planned for Java 8 .

与此同时,如果您的服务器确实需要 SNI 支持,您可以使用另一台服务器来处理 SSL/TLS 连接并将纯文本连接转发到您的应用程序。通常,这可以通过用于 HTTP(S) 的 Apache Httpd(带有反向代理)来完成。

或者,它看起来像 the HTTPS-SNI-Proxy project对于其他协议(protocol)可能更灵活(尽管其名称中有 HTTPS)。我没有尝试过,但根据它的自述文件,它会在初始的 Client Hello 中查找 SNI 扩展,然后根据配置将整个 SSL/TLS 连接(不解密)转发到另一台服务器。在您的示例中,您必须在不同的端口(不是您真正想要收听的端口)上设置两个 SSLServerSocket,并根据客户端的请求将连接从该工具转发到任一端口它的 SNI 扩展。

关于具有多个 SSL 证书的 Java 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17928041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com