Хорошо, все больше и больше это похоже на ошибку jdk, и это, кажется, доказывает это сейчас.Мой журнал показывает, что я был на jdk11.0.3 (на MAC)
2019-06-29 23: 37: 18,793 [main] [] [-] Caller + 1 на WEBPIECESxPACKAGE.DevelopmentServer.main(DevelopmentServer.java:32) ИНФОРМАЦИЯ: Запуск сервера разработки под версией java = 11.0.3
Я использовал параметры флага отладки ssl
-Djavax.net.debug=ssl:handshake:verbose:keymanager:trustmanager -Djava.security.debug=access:stack
Я окружил все свои вызовыsslEngine.wrap и sslEngine.unwrap с моими собственными журналами, и, к счастью, у всех также было имя потока в их журналах.
Кажется, когда клиенты отправляют предупреждение об этом
javax.net.ssl|DEBUG|14|webpiecesThreadPool1|2019-06-29 23:27:14.860
MDT|Alert.java:232|Received alert message (
"Alert": {
"level" : "warning",
"description": "close_notify"
}
)
SSLEngine говорит нам, что нам нужно WRAP, что является правильным, так как мы должны отвечать также close_notify, чтобы предотвратить атаки усечения, НО вместо этого движок возвращает 0 байтов и сообщает нам, что состояние движка все еще NEED_WRAP.
ТАКЖЕ, между моими журналами были до и после вызова sslEngine.wrap журналы отладки ssl ZERO, почти как sslEngine, пукнул и ничего не делал.
Тогда я думал, что буду действительнокруто и добавил это как первые строки в методе main ()
System.setProperty("jdk.tls.server.protocols", "TLSv1.2");
System.setProperty("jdk.tls.client.protocols", "TLSv1.2");
, но выбранная версия в отладочной информации была все еще TLSv1.3 .... grrrrrr ... о хорошо, я сдаюсь.