Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c3bf3bf

Browse files
committed
Tell openssl to include the names of the root certs the server trusts in
requests for client certs. This lets a client with a keystore select the appropriate client certificate to send. In particular, this is necessary to get Java clients to work in all but the most trivial configurations. Per discussion of bug #5468. Craig Ringer
1 parent 615704a commit c3bf3bf

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/backend/libpq/be-secure.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*
1212
*
1313
* IDENTIFICATION
14-
* $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.99 2010/02/26 02:00:42 momjian Exp $
14+
* $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.100 2010/05/26 15:52:37 tgl Exp $
1515
*
1616
* Since the server static private key ($DataDir/server.key)
1717
* will normally be stored unencrypted so that the database
@@ -721,6 +721,7 @@ static void
721721
initialize_SSL(void)
722722
{
723723
struct stat buf;
724+
STACK_OF(X509_NAME) *root_cert_list = NULL;
724725

725726
if (!SSL_context)
726727
{
@@ -810,7 +811,8 @@ initialize_SSL(void)
810811
ROOT_CERT_FILE)));
811812
}
812813
}
813-
else if (SSL_CTX_load_verify_locations(SSL_context, ROOT_CERT_FILE, NULL) != 1)
814+
else if (SSL_CTX_load_verify_locations(SSL_context, ROOT_CERT_FILE, NULL) != 1 ||
815+
(root_cert_list = SSL_load_client_CA_file(ROOT_CERT_FILE)) == NULL)
814816
{
815817
/*
816818
* File was there, but we could not load it. This means the file is
@@ -866,6 +868,13 @@ initialize_SSL(void)
866868

867869
ssl_loaded_verify_locations = true;
868870
}
871+
872+
/*
873+
* Tell OpenSSL to send the list of root certs we trust to clients in
874+
* CertificateRequests. This lets a client with a keystore select the
875+
* appropriate client certificate to send to us.
876+
*/
877+
SSL_CTX_set_client_CA_list(SSL_context, root_cert_list);
869878
}
870879
}
871880

0 commit comments

Comments
 (0)