Hello

I would like to share a version 2 patch for multiple client certificate 
selection feature with several enhancements over v1. I removed the extra 
parameter "sslcertdir" and "sslkeydir". Instead, I reuse the existing sslcert, 
ssldir and sslpassword parameters but allow multiple entries to be supplied 
separated by comma. This way, we are able to use a different sslpassword to 
decrypt different sslkey files based on the selected certificate. This was not 
possible in v1.

When a client is doing a TLS handshake with a server that requires client 
certificate, the client will obtain a list of trusted CA names from the server 
and try to match it from the list of certificates provided via sslcert option. 
A client certificate is chosen if its issuer matches one of the server’s 
trusted CA names. Once a certificate is chosen, the corresponding private key 
and sslpassword (if required) will be used to establish a secured TLS 
connection.

The feature is useful when a libpq client needs to communicate with multiple 
TLS-enabled PostgreSQL server instances with different TLS certificate setups. 
Instead of letting the application to figure out what certificate to send to 
what server, we can configure all possible certificate candidates to libpq and 
have it choose the best one to use instead.

 

Hello Daniel

Sorry to bother. I am just wondering your opinion about this feature? Should 
this be added to commitfest for review? This feature involves certificates 
issued by different root CAs to test the its ability to pick the right 
certificate, so the existing ssl tap test’s certificate generation script needs 
an update to test this. I have not done so yet, because I would like to discuss 
with you first.

Any comments and recommendations are welcome. Thank you!





Best regards

Cary Huang

Attachment: v2-0001-multiple_client_certificate_selection_support.patch
Description: Binary data

Reply via email to