gpt4 book ai didi

java - 如何使用 Java 检查服务器是否支持 SSL?

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

我需要检查服务器是否支持来自网络服务器的 SSL 和密码。

我研究了 Java 中的 SSLSocket,但我没有让它正常工作。

我使用了 getSupportedProtocols() 方法,它总是为每个 url 提供相同的协议(protocol)。此外,我没有得到服务器提供的密码。我猜 getEnabledCipherSuites() 是正确的方法

try {
SSLContext ctx = SSLContext.getDefault();
ctx.getClientSessionContext().setSessionTimeout(5); // in seconds
SSLSocket socket = (SSLSocket) ctx.getSocketFactory().createSocket("host.com", 443);

socket.setSoTimeout(5000); // in millis
String[] result = socket.getEnabledCipherSuites();
Arrays.sort(result);
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
} catch (IOException ex) {
System.out.println("Error!");
}

如何检查服务器是否使用 SSL?服务器返回了哪些密码?

最佳答案

getSupportedProtocols()/CipherSuites() 返回你方 可以支持的协议(protocol)和密码列表(分别)。 getEnabledProtocols()/CipherSuites() 返回您这边启用的这些列表的子集。

这不会告诉您太多有关服务器支持的信息。

根据TLS规范,客户端发送可以使用的最高协议(protocol)版本和它想要使用的密码套件列表。然后,服务器使用它在该列表(如果有)中支持的最高协议(protocol),并从该列表(如果有)中选择它想要的密码套件。

关于如何完成密码套件选择有一些灵 active (例如,参见 SSLHonorCipherOrder directive in Apache Httpd)。

本质上,如果您想查看您的服务器实际支持哪些密码套件,您必须遍历您支持的每个密码套件并逐一启用它们以尝试握手。

关于java - 如何使用 Java 检查服务器是否支持 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57379627/

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