我有一个基于Java的客户端(使用java 1.6.30),它打开了与Tomcat 7.0.26上部署的服务器的SSL连接.Tomcat使用的是Java 6,在server.xml中我配置了要使用的连接器sslProtocol="TLS".
我想知道使用的SSL版本是什么?是TLS1.0吗?TLS1.1?别的什么?
Bru*_*uno 30
SSLSession从您SSLSocket的客户端获取并使用其getProtocol()方法.
Oracle JRE/OpenJDK 6支持SSLv3和TLS 1.0.您至少需要IBM JRE 6/7或Oracle JRE/OpenJDK 7来获得对TLS 1.1和TLS 1.2的支持.(这也与可用的密码套件有关,如本问题所述.)
isa*_*pir 16
您可以使用以下代码段来获取支持协议的数组:
SSLContext.getDefault().getSupportedSSLParameters().getProtocols()
Run Code Online (Sandbox Code Playgroud)
如果您希望将其作为空格分隔的字符串,例如用于 SMTP 协商,请将数组传递给 String.join(),即:
String.join(" ", SSLContext.getDefault().getSupportedSSLParameters().getProtocols())
Run Code Online (Sandbox Code Playgroud)
后一个片段显示在 Windows 上的 Java 8 中:
SSLv2Hello SSLv3 TLSv1 TLSv1.1 TLSv1.2
在 Windows 上的 Java 11 中:
TLSv1.3 TLSv1.2 TLSv1.1 TLSv1 SSLv3 SSLv2Hello
小智 9
这将获取活动协议:
private static String getActiveProtocols() {
try {
return Arrays.toString(SSLContext.getDefault().createSSLEngine().getEnabledProtocols());
} catch (Exception e) {
StringWriter stringWriter = new StringWriter();
e.printStackTrace(new PrintWriter(stringWriter));
return "Unable to get enabled protocols: " + e.getMessage() + LINE_SEPARATOR + stringWriter;
}
}
Run Code Online (Sandbox Code Playgroud)