Как Spring Boot http2 обрабатывает запросы браузера, которые не поддерживают http2 одновременно? - PullRequest
0 голосов
/ 12 октября 2018

Spring Boot может поддерживать http / 2 сейчас, но если браузер не поддерживает http / 2, может ли сервер запросов браузера использовать http1.x + ssl с тем же портом http?Nginx может автоматически понизить http / 2 до http1.x + ssl, если браузер не поддерживает http / 2.Это проблема Spring Boot или проблема с сервлетом (tomcat, jetty, Undertow)?

Я пробовал локально с приложением Spring Boot с http / 2, браузеры, которые поддерживают http / 2, могут получить доступ успешно, нодоступ из браузеров, которые не поддерживают http / 2, получил статус «Aborted» http.

Информация о приложении:Версия Spring Boot: 2.1.0.M4Контейнер сервлетов: по умолчанию, Apache Tomcat/9.0.12

application.properties:

spring.application.name=spring-test
server.port=8443

server.http2.enabled=true

server.ssl.key-store=classpath:testkeystore.jks
server.ssl.key-store-password=test
server.ssl.key-password=test

Поддержка браузера http / 2: Chrome, версия: 66.0.3359.139Браузер не поддерживает http / 2: Firefox, версия: 30.0

1 Ответ

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

Это скорее проблема контейнера - хотя в зависимости от конкретной проблемы Spring Boot может помочь в настройке сервера.

Основная проблема, которую вы описываете:если сервер поддерживает как http / 2, так и http / 1.1, он все равно должен применять строгие минимальные требования к комплектам шифров, иначе злоумышленники могут заставить клиентов понизить уровень безопасности и использовать сломанный шифр.

Таким образом, категория клиентов HTTP, о которых вы беспокоитесь, с каждым днем ​​становится все меньше.Клиенты, которые поддерживают эти современные шифры, также поддерживают http / 2.Например, в последнем выпуске Jetty, все шифры TLS_RSA теперь исключены по умолчанию .

...