0

Steps to reproduce:

  1. Install Postgres 17.5 and OpenSsl on Windows 11

  2. Run the following commands.Enter postgres as common name on client cert creation:

    openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key
    openssl req -new -nodes -out client.csr -keyout client.key
    openssl x509 -req -in client.csr -CA server.crt -CAkey server.key -CAcreateserial -out client.crt -days 365
    
  3. Copy files to server data directory:

    copy server.key "C:\Program Files\PostgreSQL\17\data"
    copy server.crt "C:\Program Files\PostgreSQL\17\data\root.crt"
    copy server.crt "C:\Program Files\PostgreSQL\17\data"
    
    
  4. Add the following lines to top of pg_hba.conf:

    hostssl all postgres ::1/0 cert
    hostssl all postgres 0.0.0.0/0 cert
    
  5. Add the following lines to end of postgresql.conf:

    ssl = on
    ssl_ca_file = 'root.crt'
    ssl_cert_file = 'server.crt'
    ssl_key_file = 'server.key'
    
  6. Re-start postgres service

  7. Run commands

    set PGSSLCERT=client.crt
    set PGSSLKEY=client.key 
    "C:\Program Files\PostgreSQL\17\bin\pg_dump" -f "test.backup" -F c -h localhost -U postgres postgres
    
    
    

Observed:

pg_dump: error: connection to server at "localhost" (::1), port 5432 failed: SSL error: tlsv1 alert unknown ca

Postgres log contains:

[unknown] ::1 [unknown] LOG: could not accept SSL connection: certificate verify failed [unknown] ::1 [unknown] DETAIL: Client certificate verification failed at depth 0: self-signed certificate. Failed certificate data (unverified): subject "...rju/L=test/O=test/CN=postgres/[email protected]", serial number 14465968192346824308, issuer "...rju/L=test/O=test/CN=postgres/[email protected]"

How to use cert authentication with pg_dump ?

1
  • TLS never works for localhost (unless you explicitly added "localhost" as hostname as subject alternative name in the cert). Use the public hostname of the server even if you work on the same server. Commented Jul 1 at 11:23

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.