-
Notifications
You must be signed in to change notification settings - Fork 41.2k
HTTP/2 and modern TLS support #10043
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
well I'm not sure about the " i.e. no "http2.enabled" configuration key " |
I asked myself those two questions (maybe I'm missing something?):
In my opinion, in the first case the boolean flag gives the false impression that flipping that flag is all that you need. In the second case, if your HTTP clients support a modern TLS configuration, they will support HTTP/2 anyway. |
Well you can use HTTP/2 without ssl. I reckon it's maybe a non usual case as it won't work for browsers. But it can be a use case with APIs only related projects (company internal project to exchange data without need of ssl) |
@olamy Yes, HTTP/2 without TLS is definitely a use case for using it in your cloud environment (e.g. through Spring Cloud Netflix) where you might not want to manage TLS certificates for services that don't provide public APIs. @bclozel, @philwebb As you added milestones for this issue, what will be left to do once I have HTTP/2 including TLS working on JDK 9 on all supported Servlet Containers and after I remove the |
@pvorb Your contribution is very useful, but you seem to think that the requirements you've settled on are the ones Spring Boot will choose. As far as I know, we're still in the process of figuring out what should be the minimum requirements , configuration keys, supported runtimes and deployment model. Those are all tradeoffs. In the case of Jetty, requiring JDK9 is just an option. We could still go with the bootClasspath or java agent solutions. Or we could even look into the recent integration with native libraries. |
@bclozel I see my question was a little too direct and misleading. I'm just trying to provide one possible solution that works across all containers. I understand that's not necessarily the way Spring Boot will go in the end. What I'm looking for is additional feedback for my PR upon which I can further improve the solution.
Is there some publicly available discussion around these topics? I can't see much progress in the issues and PRs that were linked above. |
IMHO springboot shouldn't focus or try to have a common way to configure TLS 1.2. As you can see there are so many options available for each container and it could/will be a pain to have a standard for that :-) |
Here's my current take on this: We should introduce a In this issue, we'll cover only Tomcat and Undertow for now; Jetty is scheduled for #10902 (waiting for Jetty 4.3.8 for official support - I got it to work with SNAPSHOTs already), and Reactor Netty doesn't support HTTP/2 yet. TomcatSpring Boot 2.0 ships by default with Tomcat 8.5; with that version, HTTP/2 is only supported if the For now, starting a Tomcat 8.5 without that native support logs the following error (but the application still starts):
I don't know if we should somehow detect that error and fail the application or leave this as it is. Overriding the UndertowAs of Undertow 1.4, HTTP/2 is supported out of the box without any strong requirement. |
This commits adds the AprLifecycleListener as a default LifecycleListener in order to detect and use automatically the tomcatnative library if it is available, for SSL support. This feature can be useful for both performance reasons or for supporting ALPN when using JDK8. See gh-10043 Closes gh-9964
This commit adds a new configuration properties class for configuring HTTP/2 protocol support. By default, this protocol is disabled as enabling it requires several manual changes: * configuring a web server for proper TLS and ALPN support * configuring a proper SSL certificate See gh-10043
Uh oh!
There was an error while loading. Please reload this page.
This is an umbrella issue for HTTP/2 and modern TLS configurations in Spring Boot.
There are a few requirements for running an HTTP/2 server on the JVM:
TLS 1.2 support can be achieved in different ways:
We should consider the following:
Note: this issue is not about the Servlet 4.0 support, which is not a requirement for this.
There are already quite a few PRs and issues, but we should decide on a global approach first, and then cherry-pick from those the bits we need: #3350 #3904 #7376 #9431 #9964 #9981 #10041
The text was updated successfully, but these errors were encountered: