Как найти версию SSL/TLS в Java - программирование

Как найти версию SSL/TLS в Java

У меня есть клиент на основе java (с использованием java 1.6.30), который открывает SSL-соединение с моим сервером, установленным на Tomcat 7.0.26. Tomcat использует Java 6, а в server.xml я сконфигурировал соединитель для использования sslProtocol="TLS".

Интересно, какая версия SSL используется? Это TLS1.0? TLS1.1? Что-то еще?

4b9b3361

Ответ 1

Получите 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. (Это также относится к доступным комплектам шифров, как указано в этом вопросе.)

Ответ 2

Вы можете использовать следующий фрагмент кода для получения массива поддерживаемых протоколов:

SSLContext.getDefault().getSupportedSSLParameters().getProtocols()

Если вы хотите, чтобы это была строка с пробелами, например, для согласования SMTP передайте массив в String.join(), т.е.

String.join(" ", SSLContext.getDefault().getSupportedSSLParameters().getProtocols())

Последний фрагмент кода показан в Java 8 в Windows:

SSLv2Hello SSLv3 TLSv1 TLSv1.1 TLSv1.2

И в Java 11 для Windows:

TLSv1.3 TLSv1.2 TLSv1.1 TLSv1 SSLv3 SSLv2Hello

Ответ 3

Вы можете узнать, какую версию TLS использует ваш код, установив системное свойство: передайте -Djavax.net.debug=all в команду java, которая запускает приложение. Когда приложение согласовывает соединение SSL, оно печатает версию TLS, ищите строку "HelloClient" в выходных данных.

Для получения дополнительной информации см. https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/ReadDebug.html

Ответ 4

для tomcat 8.5.38 и 8.5.46 (и, вероятно, tomcat 7.0x и новее) добавление этого в шаблон AccessLogValve (в server.xml) - и включение этого Valve - покажет используемую версию TLS:

%{org.apache.tomcat.util.net.secure_protocol_version}r

eg
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" %{org.apache.tomcat.util.net.secure_protocol_version}r />