Re: Trust intermediate CA for client certificates

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Craig Ringer <craig(at)2ndquadrant(dot)com>, Stephen Frost <sfrost(at)snowman(dot)net>, Ian Pilcher <arequipeno(at)gmail(dot)com>, stellr(at)vt(dot)edu, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Trust intermediate CA for client certificates
Date: 2013-12-02 20:38:08
Message-ID: 20131202203808.GI5274@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

On Mon, Dec 2, 2013 at 03:01:25PM -0500, Andrew Dunstan wrote:
> >I don't fully understand the issues but the discussion seens to indicate
> >this. Am I missing something? Should I run some tests?
> >
>
> AIUI, you need a complete chain from one end to the other. So the
> cert being checked can include the intermediate cert in what it
> sends, or it can be in the root.crt at the other end, but one way or
> another, the checking end needs a complete chain from a root cert to
> the cert from the other end.

Yes, this was my understanding. Let me ask a simple question --- can
you put only the client cert on the client (postgresql.crt) and only the
root cert on the server (root.crt), and will it work?

I think Tom's question is whether OpenSSL will read through all the
entries in root.crt and find the one that signed the remote cert, and
has it always done that, i.e. does the remote side have to provide the
upper-level cert to match against.

One big thing I learned from this is that the local root.crt is only
used to verify remote certificates; it isn't related to how the remote
end verifies your certificate. Now, in most cases, the root.crt is
identical for clients and servers, but it doesn't have to be.

Put another way, I thought you put the root cert in your local root.crt
and the local cert in postgresql.crt or server.crt, but in fact the
requirement is that the local certificate chain to root must be in the
remote root.crt.

Of course, I might be wrong, but I am trying to clarify this for our
users.

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ Everyone has their own god. +

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2013-12-02 20:44:18 Re: Trust intermediate CA for client certificates
Previous Message Tom Lane 2013-12-02 20:32:54 Re: Trust intermediate CA for client certificates

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2013-12-02 20:44:18 Re: Trust intermediate CA for client certificates
Previous Message Stephen Frost 2013-12-02 20:35:06 Re: Extension Templates S03E11