如何检查服务器是否支持Java的SSL?

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

我查看了Java中的SSLSocket,但无法正常工作。

我使用的方法getSupportedProtocols()始终为每个网址提供相同的协议。此外,我没有从服务器获得密码。我猜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()分别返回 您一方

可以支持的协议和密码列表。getEnabledProtocols()/CipherSuites()返回您启用的这些列表的子集。

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

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

关于如何完成密码套件选择,有一些灵活性(例如,请参阅SSLHonorCipherOrderApache

Httpd中的指令)。

本质上,如果要查看服务器实际支持的密码套件,则必须遍历所支持的每个密码套件,并使它们一个接一个地进行尝试。

以上是 如何检查服务器是否支持Java的SSL? 的全部内容, 来源链接: utcz.com/qa/411007.html

回到顶部