Re: BUG #5468: Pg doesn't send accepted root CA list to client during SSL client cert request - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #5468: Pg doesn't send accepted root CA list to client during SSL client cert request
Date
Msg-id 2808.1274837746@sss.pgh.pa.us
Whole thread Raw
In response to Re: BUG #5468: Pg doesn't send accepted root CA list to client during SSL client cert request  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: BUG #5468: Pg doesn't send accepted root CA list to client during SSL client cert request  (Craig Ringer <craig@postnewspapers.com.au>)
List pgsql-bugs
I wrote:
> What I meant to question is *which* file the intermediate CA certs
> go into.

I did some more experimentation using "openssl s_client" to look at the
cert exchange (after lobotomizing the postmaster so that it'd start a
TLS exchange immediately upon connection, without our normal startup
protocol).  It appears to be the case that there are two configurations
that work for CA chains:

1. server.crt can include just the server's own cert, if all
intermediate certs up to and including the root are listed in root.crt.

2. server.crt can include the server's own cert plus all intermediate
certs *up to and including the root*.  In this case just the root need
be listed in root.crt.

One would think that the root cert could be omitted from server.crt if
it's given in root.crt, but apparently this is not so, except for the
special case where the server cert is directly signed by a root CA.

I am now of the opinion that bug #5245 is in fact an exact dup of
bug #5468.  The previous reporter was jumping to conclusions about what
his problem was: it was not that the server didn't send the full cert
chain, but that Java couldn't do the right thing without having the list
of cert names.

It's possible, depending on exactly what Java does in these cases, that
it has to have cert names given to it for the intermediate certs as well
as the root.  This would imply that only configuration #1 will work with
Java clients, even after we add the SSL_CTX_set_client_CA_list call.
That would be too bad, since configuration #2 is probably a bit
preferable from the point of view of considering fewer certs to be
fully trusted.

In any case I'm thinking that we need to document how to set up
configurations with chains of CA certs.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Stephen Frost
Date:
Subject: Re: BUG #5468: Pg doesn't send accepted root CA list to client during SSL client cert request
Next
From: Craig Ringer
Date:
Subject: Re: BUG #5468: Pg doesn't send accepted root CA list to client during SSL client cert request