Re: BUG #5559: Full SSL verification fails when hostaddr provided - Mailing list pgsql-bugs

From Bruce Momjian
Subject Re: BUG #5559: Full SSL verification fails when hostaddr provided
Date
Msg-id 201102061706.p16H6nQ27151@momjian.us
Whole thread Raw
In response to Re: BUG #5559: Full SSL verification fails when hostaddr provided  (Christopher Head <chris2k01@hotmail.com>)
List pgsql-bugs
Christopher Head wrote:
> On Wed, 14 Jul 2010 18:35:55 -0400
> Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> > Bruce Momjian <bruce@momjian.us> writes:
> > > Do the docs need any more updating?
> >
> > No doubt, but it's a bit premature to consider that while we're still
> > arguing whether the code needs to change more.
> >
> >             regards, tom lane
> >
>
> Sorry to bother everyone, but AFAICT this discussion kind of
> disappeared. Did I perhaps get dropped from CC? I'm interested to know
> what the final resolution of this is.
>
> My own thought would be:
> "host" means the thing you intended to connect to: a unique identifier
> for the server, probably (usually) the hostname, and also the thing
> that goes in a certificate. Should (probably) never be omitted.
>
> "hostaddr" means the thing you actually send your TCP SYN packet to:
> maybe an IP address if you want to save a DNS lookup, maybe even
> "localhost" if you want to use an SSH tunnel (or even some other
> hostname if you have an even stranger tunnel set up), but purely a
> "network-layer" thing about *how to get to* the server, and not a
> "user-trust-layer" thing about *who the server is*. If omitted,
> defaults to being equal to "host".
>
> I don't know if that's what was intended, but that's what I thought
> they would mean.

I have adjusted the libpq docs to be clearer about 'hostaddr' by using
an itemized list and rewording;   attached and applied.

I am not sure what else needs to be done, and I don't think anyone else
knows either, so unless I hear otherwise, I will consider this item
closed.  Perhaps the clearer docs will highlight a new open item.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +
diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index e78d708..3824588 100644
*** a/doc/src/sgml/libpq.sgml
--- b/doc/src/sgml/libpq.sgml
*************** PGconn *PQconnectdbParams(const char **k
*** 164,185 ****
             Using <literal>hostaddr</> instead of <literal>host</> allows the
             application to avoid a host name look-up, which might be important
             in applications with time constraints. However, a host name is
!            required for Kerberos, GSSAPI, or SSPI authentication, as well as
!            for full SSL certificate verification. The following rules are
!            used:
!            If <literal>host</> is specified without <literal>hostaddr</>,
!            a host name lookup occurs.
!            If <literal>hostaddr</> is specified without <literal>host</>,
!            the value for <literal>hostaddr</> gives the server network address.
!            The connection attempt will fail in any of the cases where a
!            host name is required.
!            If both <literal>host</> and <literal>hostaddr</> are specified,
!            the value for <literal>hostaddr</> gives the server network address.
!            The value for <literal>host</> is ignored unless needed for
!            authentication or verification purposes, in which case it will be
!            used as the host name.  Note that authentication is likely to fail
!            if <literal>host</> is not the name of the machine at
!            <literal>hostaddr</>.
             Also, note that <literal>host</> rather than <literal>hostaddr</>
             is used to identify the connection in <filename>~/.pgpass</> (see
             <xref linkend="libpq-pgpass">).
--- 164,199 ----
             Using <literal>hostaddr</> instead of <literal>host</> allows the
             application to avoid a host name look-up, which might be important
             in applications with time constraints. However, a host name is
!            required for Kerberos, GSSAPI, or SSPI authentication
!            methods, as well as for <literal>verify-full</> SSL
!            certificate verification.  The following rules are used:
!            <itemizedlist>
!             <listitem>
!              <para>
!               If <literal>host</> is specified without <literal>hostaddr</>,
!               a host name lookup occurs.
!              </para>
!             </listitem>
!             <listitem>
!              <para>
!               If <literal>hostaddr</> is specified without <literal>host</>,
!               the value for <literal>hostaddr</> gives the server network address.
!               The connection attempt will fail if the authentication
!               method requires a host name.
!              </para>
!             </listitem>
!             <listitem>
!              <para>
!               If both <literal>host</> and <literal>hostaddr</> are specified,
!               the value for <literal>hostaddr</> gives the server network address.
!               The value for <literal>host</> is ignored unless the
!               authentication method requires it, in which case it will be
!               used as the host name.
!              </para>
!             </listitem>
!            </itemizedlist>
!            Note that authentication is likely to fail if <literal>host</>
!            is not the name of the server at network address <literal>hostaddr</>.
             Also, note that <literal>host</> rather than <literal>hostaddr</>
             is used to identify the connection in <filename>~/.pgpass</> (see
             <xref linkend="libpq-pgpass">).

pgsql-bugs by date:

Previous
From: Adam PAPAI
Date:
Subject: Re: sort order (ORDER BY) hu_HU.UTF-8 locale with UTF-8 encoding is not working correctly on FreeBSD
Next
From: "Richard Neill"
Date:
Subject: BUG #5867: wish: plpgsql print table for debug