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 -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs