-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
Improve TLS support in the reactive rest client #22293
Comments
I'm checking this out to find out what current support actually is like. The first impression from checking the all-config guide is that there is not much consistency in naming related properties. There are all kinds of notations - Some extensions have different set of properties for PEM files and for binary key stores (by binary key stores I mean JKS and P12), some extensions use the same properties to support both PEM and binary key stores, and some only support binary key stores. There is a number of extensions that use some kind of key store or trust store:
I mainly investigated HTTP server and rest clients for now. HTTP serverSupports JKS, P12: yes JKS and P12 can be configured as such:
The PEM files can be used instead of key store, and are configured with different properties:
It doesn't seem to be possible to configure PEM file as a trust store. REST clients (classic and reactive)Supports JKS, P12: yes
OIDC & OIDC clientSupports JKS, P12: yes
Spring Cloud config clientSupports JKS, P12: probably both
GraphQL clientSupports JKS, P12: yes
gRPC serverSupports JKS, P12: yes
gRPC clientSupports JKS, P12: ?
Kafka StreamsSupports JKS, P12: yes
Mailer (trust store support)Supports JKS, P12: yes
|
What I would like to do is add PEM support to REST client extensions, I'm not sure about details yet. |
Some part of this is also addressed in #17038. the main idea is to have a "registry of certs" which can be queried and populated by the various extension. That would provide a single configuration model. Of course, PEM, JKS, and PCK12 would have built-in support. |
@cescoffier Have you looked at my old PR #22094. It was for Dynamic mTLS but if you skip to the "Ideas" section of my comments you can see, I think this is essentially what you're suggesting here. |
@kdubb After trying to find time to implement this a few times, I ended up with a global certs registry that extensions can populate and query to retrieve the certs. It would enable extensions to provide and validate certs (like Let's encrypt). I still believe it's the most flexible approach, as we need to handle lots of different cases/providers and formats. Because lots of things in Quarkus are Vert.x based, it is also essential that we provide the Vert.x structures when we can. Recent requirements also show that certs must be in memory and read-only once from the FS, with potentially some re-sync happening periodically (I don't know how we will handle this for servers (for clients it's easy)). |
Description
Currently, the TLS configuration is limited to JKS (which is not the Java default anymore).
We should add support for PEM and P12 for key stores and trust stores.
SNI and alias support (including alias password) should also be added.
Implementation ideas
All these parameters are supported by the underlying HTTP client.
The text was updated successfully, but these errors were encountered: