Мы столкнулись с этой странной ошибкой в производстве, где при больших объемах (~ 10 тысяч в час) 10% наших вызовов отклоняются с исключением SSL, упомянутым ниже. Это происходит после обновления младшей версии Java 8 (JDK-8028518).
Received close_notify during handshake
Caused by: javax.net.ssl.SSLProtocolException: Received close_notify during handshake
at sun.security.ssl.Alert.createSSLException(Alert.java:129)
at sun.security.ssl.Alert.createSSLException(Alert.java:117)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:314)
Поскольку это не удается только для процента вызовов, мы не можем понять, почему это может происходить.
Мы используем строку ниже, чтобы установить контекст ssl в коде на стороне клиента.
SSLContext ctx = SSLContext.getInstance(TLS);
javax.net.ssl.SSLProtocolException: Received close_notify during handshake
Можете ли вы проверить конфигурацию счетчика потоков вашего сервера?
Одна из возможностей может заключаться в высокой нагрузке, больше (относительно) запросов с высокой задержкой, вызывающих эту проблему.
При небольшой нагрузке на сервере может быть достаточно потоков для обработки всего трафика (поскольку запросы с высокой задержкой также будут относительно меньше)
Один из возможных вариантов -
В нашем случае это происходило из-за того, что рукопожатие занимало слишком много времени. Это было связано с тем, что на стороне клиента перед вызовом чтение из защищенного хранилища занимало слишком много времени, что приводило к сбою рукопожатия в половине случаев. Этого удалось избежать путем введения кэширования объектов, связанных с безопасным хранилищем, чтобы не создавать их экземпляры снова и снова.