Клиент Java пересмотреть SSL - PullRequest
       31

Клиент Java пересмотреть SSL

0 голосов
/ 05 октября 2018

У меня есть приложение Dropwizard, в котором ресурс должен вызывать ресурс в другом приложении Dropwizard.Мы заметили, что много времени уходит на пересмотр SSL.При ближайшем рассмотрении это происходит, только если другое приложение находится на той же машине.Т.е.:

client.target("https://mymachine.com/test").request().post(null);
client.target("https://mymachine.com/test").request().post(null);
// renegotiation

при использовании параметра командной строки -Djavax.net.debug=ssl:handshake:verbose в журнале написано

%% Client cached [Session-13, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]
%% Try resuming [Session-13, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256] from port 55043
...
%% Invalidated:  [Session-13, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]
%% Initialized:  [Session-15, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]

Но при вызове той же службы на моем локальном компьютере:

client.target("https://othermachine.com/test").request().post(null);
client.target("https://othermachine.com/test").request().post(null);
// SSL session re-use (=wanted)

В журнале написано:

%% Client cached [Session-15, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
%% Try resuming [Session-15, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256] from port 55051
...
%% Server resumed [Session-15, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]

Что здесь происходит?

1 Ответ

0 голосов
/ 12 октября 2018

Оказывается, версии Java отличались.Мой localhost использовал старую версию: - $.

Java ™ SE Development Kit 8, обновление 161 (JDK 8u161) 16 января 2018 г.

Новые функции

security-libs / javax.net.ssl ​​ДобавленоПоддержка хэша сеанса TLS и расширенного расширения главного секретного кода Добавлена ​​поддержка для хэша сеанса TLS и расширенного расширения главного секретного кода (RFC 7627) в JDK-провайдере JDK.Обратите внимание, что в целом изменение сертификата сервера ограничено, если идентификация конечной точки не включена, а предыдущее рукопожатие является сокращенным исходным рукопожатием возобновления сеанса, если только идентификаторы, представленные в обоих сертификатах, не могут рассматриваться как одинаковые.Однако, если расширение включено или согласовано, ограничение на изменение сертификата сервера не требуется и будет соответственно отменено.В случае проблем с совместимостью приложение может отключить согласование этого расширения, установив для свойства System jdk.tls.useExtendedMasterSecret значение false в JDK.Установив для свойства System jdk.tls.allowLegacyResuming значение false, приложение может отклонить сокращенное рукопожатие, если не согласован хэш сеанса и расширенное расширение главного секрета.Если для свойства System jdk.tls.allowLegacyMasterSecret установлено значение false, приложение может отклонять подключения, которые не поддерживают хэш сеанса и расширенное расширение главного секрета.

См. JDK-8148421

...