Тайм-аут соединения Http только при серфинге мобильного клиента из сети Vodafone + Google Chrome
У меня есть веб-приложение (spring-boot, tomcat), которое работает и доступно через https без проблем, но только если клиент не находится в мобильной сети vodafone и не просматривает браузер с помощью Chrome. Если это так, при переходе на страницу Chrome дает тайм-аут и просто не может попасть на сайт, тогда как другой браузер не имеет проблем с доступом к сайту.
Некоторые интересные факты могут быть: - я обновился до java11, используя accepttopenjdk v11.0.3 (может быть, некоторые проблемы, связанные с tls 1.3?) - перед обновлением, вероятно, он работал со всеми комбинациями мобильной сети / браузера - сбой рукопожатия ssl, некоторые исключения, которые иногда появляются (не всегда) в журнале, прилагаются. - происходит только при просмотре chrome в мобильной сети vodafone, даже при создании точки доступа на этом устройстве и при серфинге с другим устройством через эту точку доступа также не будет работать - цепочка сертификатов неполная, тестовый запуск по https://www.ssllabs.com/ получает оценку B
У кого-нибудь тоже были подобные проблемы? Есть идеи, что здесь происходит не так? Любая помощь высоко ценится.
Непосредственный просмотр сайта по его ip также не помог.
java.util.NoSuchElementException: No value present
at java.base/java.util.Optional.get(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.ServerHello$T13ServerHelloProducer.produce(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.SSLHandshake.produce(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.ClientHello$T13ClientHelloConsumer.goServerHello(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.ClientHello$T13ClientHelloConsumer.consume(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.ClientHello$ClientHelloConsumer.onClientHello(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.ClientHello$ClientHelloConsumer.consume(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.SSLHandshake.consume(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(Unknown Source) ~[na:na]
at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na]
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(Unknown Source) ~[na:na]
at org.apache.tomcat.util.net.SecureNioChannel.tasks(SecureNioChannel.java:423) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap(SecureNioChannel.java:483) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:238) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1724) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
а также
java.nio.BufferUnderflowException: null
at java.base/java.nio.Buffer.nextGetIndex(Unknown Source) ~[na:na]
at java.base/java.nio.HeapByteBuffer.get(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.ClientHello$ClientHelloMessage.<init>(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.ClientHello$ClientHelloConsumer.consume(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.SSLHandshake.consume(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(Unknown Source) ~[na:na]
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(Unknown Source) ~[na:na]
at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na]
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(Unknown Source) ~[na:na]
at org.apache.tomcat.util.net.SecureNioChannel.tasks(SecureNioChannel.java:423) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap(SecureNioChannel.java:483) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:238) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1724) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.19.jar!/:9.0.19]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Кроме того, еще одно предупреждение в журналах о:
The ClientHello was not presented in a single TLS record so no SNI information could be extracted
2 ответа
Похоже, сообщение рукопожатия ClientHello было разделено на несколько записей. Не могли бы вы прикрепить журнал отладки неудачного соединения (используя системное свойство "javax.net.debug=all)?
Как оказалось, это была комбинация провайдера (vodafone) + tls 1.3 + java 11 После изменения конфигурации и повторного использования tls 1.2 снова заработало. Это совсем не исправить, но дает нам больше времени для выяснения точной причины