-
-
Notifications
You must be signed in to change notification settings - Fork 188
Support boringssl SSLCredential API #935
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
Conversation
|
@normanmaurer: If you could PTAL. Curious if you have a different design suggestion? This should pave the path for PQC support in |
normanmaurer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First round of review...
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
…turn for non-getters
# Conflicts: # openssl-dynamic/src/main/c/sslcontext.c
openssl-classes/src/main/java/io/netty/internal/tcnative/SSLCredential.java
Show resolved
Hide resolved
openssl-classes/src/main/java/io/netty/internal/tcnative/SSLCredential.java
Show resolved
Hide resolved
openssl-classes/src/main/java/io/netty/internal/tcnative/SSLCredential.java
Outdated
Show resolved
Hide resolved
…edential.java Co-authored-by: Norman Maurer <[email protected]>
…edential.java Co-authored-by: Norman Maurer <[email protected]>
…edential.java Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
Co-authored-by: Norman Maurer <[email protected]>
|
@normanmaurer @chrisvest the first rounds of feedback should be addressed; I'm not sure if the centos6 build failure is related to my change. |
|
I think this looks good. Sorry it took a while to get back to reviewing it again. |
|
@chrisvest thank you for the review, I can look into integrating this once it merges. @normanmaurer the requested changes is still showing from the first round review, I'm not sure if that's blocking or not for this repo |
|
@normanmaurer would you be able to take another look this week? |
|
@jmcrawford45 I am currently on PTO... will check once back |
normanmaurer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM... Thanks a lot!
Motivation:
Historically, BoringSSL lacked a built-in method to select between RSA and ECDSA certificates. The selection process, especially at TLS 1.2, is quite complex, as detailed in this link. TLS 1.3 simplifies this process significantly. Additionally, within ECDSA, there are different curves to consider, and future developments will introduce post-quantum key types. Recently, the SSL Credential API was introduced to BoringSSL to address this and a variety of other certificate negotiation decisions, such as:
Different kinds of credentials (delegate credentials, raw public keys, external PSKs, and more future innovations.
Negotiation for trust anchors to aid in PQ transitions and PKI agility.
Modifications:
Add JNI bindings for all the existing SSL_Credential related functionality in BoringSSL.
Result:
The SSL_CREDENTIAL consolidates everything related to a single "credential" into an object. Credentials can vary in type, such as X.509 certificates or others. Each credential has criteria, based on TLS protocol rules, to determine its applicability to a connection. Users configure an ordered preference list of credentials, and BoringSSL selects the first matching one.
This approach can be used alongside application-specific selection logic, like SNI dispatch. End users would use their criteria to select a list of candidates, such as an ECDSA and RSA certificate for a host, configure them in preference order with BoringSSL, and BoringSSL will evaluate them according to protocol rules.
Implements #918