postgresql - psql: FATAL: connection requires a valid client certificate -
i trying connect postgresql server psql complaining don't have valid client certificate. here how create certificates:
self-signed server certificate:
openssl req -new -text -nodes -keyout server.key -out server.csr -subj '/c=us/st=california/l=fremont/o=example/ou=coredev/cn=192.168.0.100' # cn server's ip address openssl req -x509 -text -in server.csr -key server.key -out server.crt cp server.crt root.crt rm server.csr chmod og-rwx server.key client certificate:
openssl req -new -nodes -keyout client.key -out client.csr -subj '/c=us/st=california/l=fremont/o=example/ou=coredev/cn=postgres' # postgres database user name openssl x509 -req -cacreateserial -in client.csr -ca root.crt -cakey server.key -out client.crt rm client.csr after copying necessary files (client.crt, client.key, root.crt) onto client machine , changing permission (i.e., chmod og-rwx client.key), following:
psql 'host=192.168.0.100 port=5432 dbname=postgres user=postgres sslmode=verify-full sslcert=client.crt sslkey=client.key sslrootcert=root.crt' and get:
psql: fatal: connection requires valid client certificate am doing client certificate signing process wrong?
thanks,
#edit
i tried:
openssl verify -cafile root.crt -purpose sslclient client.crt and get:
client.crt: ok using wireshark, here capture got communication between client (192.168.0.103) , server (192.168.0.100):

do know how make sense of this?
#edit 2
okay, did said, , seems server not send certificaterequest message client.. can see below:

but weird because in pg_hba.conf, have:
hostssl postgres 192.168.0.103/32 cert what think?
#edit3 (solved!)
i changed pg_hba.conf contain:
hostssl postgres 192.168.0.103/32 cert clientcert=1 and changed postgresql.conf add in "security , authentication" section:
ssl_ca_file = 'root.crt' and worked! thank much!
in situation tend pull out wireshark , snoop ssl negotiation make sure client certificate being offered client.
i suggest using openssl verify client->root signing link, too.
openssl verify -cafile root.crt -purpose sslclient client.crt edit: it's necessary specify clientcert=1 when cert authentication chosen. yes, that's weird.
Comments
Post a Comment