-
-
Notifications
You must be signed in to change notification settings - Fork 191
feature: Support boringssl SSLCredential API #918
Description
Title: Proposal for Integration with BoringSSL SSL Credential API
Description:
I would like to propose an integration with the BoringSSL SSL Credential API and am seeking feedback from the maintainers on their willingness to support this initiative. I am prepared to work on the code changes for the integration but wanted to check in here first.
Background:
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.
Functionality:
With the proposed functionality, BoringSSL could in the future make various 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.
SSL_CREDENTIAL Overview:
The SSL_CREDENTIAL is designed to configure these elements. It 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.
Relevant Links: