Bagaimana cara menentukan sertifikat klien untuk psql?

11

Saya memiliki server Postgres dengan pengguna devyang memerlukan sertifikat klien untuk masuk. Saya menggunakan perintah psql "sslmode=require user=dev host=db.prod", yang memberi saya psql: FATAL: connection requires a valid client certificate.

Saya tahu di mana sertifikat berada di server saya. Pertanyaan saya adalah, bagaimana cara menentukan lokasi sertifikat klien psql?

Jorn
sumber

Jawaban:

8

Seperti yang dinyatakan dalam dokumentasi yang ditautkan oleh @Milen, Anda dapat melakukan ini dengan menyetel variabel lingkungan PGSSLCERTdan PGSSLKEY, atau dengan menambahkan sslcert=<cert location> sslkey=<key location>ke string koneksi.

Jorn
sumber
2
Saya akan mencatat di sini bahwa PGSSLCERTdan PGSSLKEYjuga memungkinkan jalur untuk ditentukan, jadi jangan catsertifikat atau kunci itu sendiri ke dalam variabel tersebut.
SeldomNeedy
8

Hasil akhirnya terlihat seperti $>psql "port=5431 host=localhost user=postgres sslcert=./test/client.crt sslkey=./test/client.key sslrootcert=./test/server.crt sslmode=verify-ca"

Semua variabel ada di sini .

Olivier D
sumber
jika saya menempatkan root crt di ~ / .postgreqsl / saya tidak harus memberikan kunci apa pun. Jika saya meletakkannya di tempat lain dan memberikan sslrootcert, tiba-tiba saya juga harus memberikan kunci - apakah Anda tahu bagaimana cara kerjanya?
Radu Simionescu