readme.ssl

来自「PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统」· SSL 代码 · 共 484 行 · 第 1/2 页

SSL
484
字号
to clients (via certificates), but clients can remain anonymous.This protects clients from "man-in-the-middle" attacks (where abogus server either captures all data or provides bogus data),but does not protect the server from bad data injected by falseclients.The community has established a set of criteria for securecommunications:*) the server must provide a certificate identifying itself   via its own fully qualified domain name (FDQN) in the   certificate's Common Name (CN) field.*) the FQDN in the server certificate must resolve to the   IP address used in the connection.*) the certificate must be valid.  (The current date must be   no earlier than the 'notBefore' date, and no later than the   'notAfter' date.)*) the server certificate must be signed by an issuer certificate   known to the clients.   This issuer can be a known public CA (e.g., Verisign), a locally   generated root cert installed with the database client, or the    self-signed server cert installed with the database client.   Another approach (used by SSH and most web clients) is for the   client to prompt the user whether to accept a new root cert when   it is encountered for the first time.  psql(1) does not currently   support this mechanism.*) the client *should* check the issuer's Certificate Revocation   List (CRL) to verify that the server's certificate hasn't been   revoked for some reason, but in practice this step is often   skipped.*) the server private key must be owned by the database process   and not world-accessible.  It is recommended that the server   key be encrypted, but it is not required if necessary for the   operation of the system.  (Primarily to allow automatic restarts   after the system is rebooted.)  The 'mkcert.sh' script can be used to generate and install suitable certificatesFinally, the client library can have one or more trusted rootcertificates compiled into it.  This allows clients to verifycertificates without the need for local copies.  To do this,the source file src/interfaces/libpq/fe-ssl.c must be editedand the database recompiled.Secure Channel: Mutual Authentication-------------------------------------Mutual authentication requires that servers and clients eachauthenticate to the other.  This protects the server fromfalse clients in addition to protecting the clients from falseservers.The community has established a set of criteria for clientauthentication similar to the list above.*) the client must provide a certificate identifying itself.   The certificate's Common Name (CN) field should contain the   client's usual name.*) the client certificate must be signed by a certificate known   to the server.   If a local root cert was used to sign the server's cert, the   client certs can be signed by the issuer.*) the certificate must be valid.  (The current date must be   no earlier than the 'notBefore' date, and no later than the   'notAfter' date.)*) the server *should* check the issuer's Certificate Revocation   List (CRL) to verify that the clients's certificate hasn't been   revoked for some reason, but in practice this step is often   skipped.*) the client's private key must be owned by the client process   and not world-accessible.  It is recommended that the client   key be encrypted, but because of technical reasons in the   architecture of the client library this is not yet supported.PostgreSQL can generate client certificates via a four-step process.1. The "client.conf" file must be copied from the server.  Certificates   can be highly localizable, and this file contains information that   will be needed later.   The client.conf file is normally installed in /etc/postgresql/root.crt.   The client should also copy the server's root.crt file to   ~/.postgresql/root.crt.2. If the user has the OpenSSL applications installed, they can   run pgkeygen.sh.  (An equivalent compiled program will be available   in the future.)  They should provide a copy of the   ~/.postgresql/postgresql.pem file to their DBA.3. The DBA should sign this file the OpenSSL applications:     $ openssl ca -config root.conf -ss_cert ....   and return the signed cert (postgresql.crt) to the user.4. The user should install this file in ~/.postgresql/postgresql.crt.The server will log every time a client certificate has beenused, but there is not yet a mechanism provided for using clientcertificates as PostgreSQL authentication at the application level.---------------------------(end of broadcast)---------------------------TIP 5: Have you checked our extensive FAQ?http://www.postgresql.org/users-lounge/docs/faq.html------------------------------------------------------------------------------Date: Tue, 21 May 2002 19:50:38 -0400From: Neil Conway <nconway@klamath.dyndns.org>To: "Bear Giles" <bgiles@coyotesong.com>cc: pgsql-hackers@postgresql.orgSubject: Re: [HACKERS] 2nd cut at SSL documentationOn Tue, 21 May 2002 14:27:00 -0600 (MDT)"Bear Giles" <bgiles@coyotesong.com> wrote:> A second cut at SSL documentation....I've pointed out some minor things I noticed while reading through.Yeah, I was bored :-)> The sites that require SSL fall into one (or more) of several broad> categories.> > *) They have insecure networks. > >    Examples of insecure networks are anyone in a "corporate hotel,"What's a corporate hotel?> *) They have 'road warriors.'This section title sounds confusingly similar to the 1st item.Perhaps "They need to authentication clients securely" or somethingsimilar? The need to use client certificates does not apply only to"road warriors" -- I've seen situations where client-certs are used forclients to connecting to a server over a LAN.> *) Access is limited to the Unix socket."the" sounds wrong, there's more than just 1 :-)> *) Access is limited to a physically secure network.> >    "Physically secure" networks are common in the clusters and>    colocation sites - all database traffic is restricted to dedicated>    NIC cards and hubs, and all servers and cabling are maintained in>    locked cabinets.Perhaps add a note on the performance hit here?> Using SSH/OpenSSH as a Virtual Private Network (VPN)I'm unsure why you're bothering to differentiate between SSHand OpenSSH.> SSH and OpenSSH can be used to construct a Virtual Private Network> (VPN)No need to include the abbreviation for VPN here, you've explainedthe term before.> to provide confidentiality of PostgreSQL communications.  > These tunnels are widely available and fairly well understood, but > do not provide any application-level authentication information.You might want to clarify what "application-level authenticationinformation" means, or else leave out all discussion of drawbacksuntil later.> To set up a SSH/OpenSSH tunnel, a shell account for each> user should be set up on the database server.  It is acceptable> for the shell program to be bogus (e.g., /bin/false), if the> tunnel is set up in to avoid launching a remote shell.> > On each client system the ~/.ssh/config file should contain> an additional line similiar to> >  LocalForward 5555 psql.example.com:5432"pgsql.example.com" strikes me as a better example hostname (I alwaysthink that psql == DB client, postgres/postmaster/pgsql == DB server).> Unfortunately, there are many potential drawbacks to SSL tunnels:I think you mean SSH tunnels.> *) the SSH implementation or protocol may be flawed.  Serious problems>    are discovered about once every 18- to 24- months.I'd be skeptical whether this weakness if specific to SSH -- therecan be security holes in OpenSSL, the SSL protocol, the SSLimplementation in PostgreSQL, etc.> *) the database server must provide shell accounts for all users>    needing access.  This can be a chore to maintain, esp. in ifRemove the "in".> *) neither the front- or back-end can determine the level of>    encryption provided by the SSH tunnel - or even whether an>    SSH tunnel is in use.  This prevents security-aware clients>    from refusing any connection with unacceptly weak encryption.Spelling error.> Finally, the client library can have one or more trusted root> certificates compiled into it.  This allows clients to verify> certificates without the need for local copies.  To do this,> the source file src/interfaces/libpq/fe-ssl.c must be edited> and the database recompiled."PostgreSQL" recompiled -- database versus RDBMS can be ambiguous.> Mutual authentication requires that servers and clients each> authenticate to the other.  This protects the server from> false clients in addition to protecting the clients from false> servers."false" in this context?Cheers,Neil-- Neil Conway <neilconway@rogers.com>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?