web-dev-qa-db-ja.com

psqlを使用してSSLモードでpostgresqlに接続する

PostgreSQLサーバーのSSL証明書を構成しようとしています。データディレクトリに証明書ファイル(server.crt)とキー(server.key)を作成し、パラメーターSSLを "on"に更新して安全な接続を有効にしました。

クライアント側のサーバー証明書でサーバーのみを認証し、サーバー側でクライアントの信頼性を要求しないようにします。コマンドを接続して実行するクライアントとしてpsqlを使用しています。

PostgreSQL 8.4およびlinuxを使用しています。 SSLを有効にしてサーバーに接続するために以下のコマンドで試しました

       psql "postgresql://localhost:2345/postgres?sslmode=require"

しかし、私は得ています

       psql: invalid connection option "postgresql://localhost:2345/postgres?sslmode"

ここで何が間違っていますか? SSLモードを有効にしてサーバーに接続しようとしている方法は正しいですか?クライアントではなくサーバーのみを認証しても問題ありませんか?

私を助けてください。

57
Mojoy

9.2より下のpsqlは、このURLに似たオプションの構文を受け入れません。

SSLの使用は、コマンドラインのsslmode=valueオプションまたは PGSSLMODE 環境変数によって駆動できますが、デフォルトはpreferであり、SSL接続が最初に試行されます何も指定せずに自動的に。

Conninfo文字列を使用した例(psql 8.4に更新)

psql "sslmode=require Host=localhost dbname=test"

その他のオプションについては、 マニュアルページ をお読みください。

88
Daniel Vérité
psql --set=sslmode=require -h localhost -p 2345 -U thirunas \
-d postgres -f test_schema.ddl
12
Andrii Batiuk

psql "sslmode=require Host=localhost port=2345 dbname=postgres" --username=some_user

postgres psql documentation によると、接続パラメーターのみがconninfo文字列に含まれる必要があります(そのため、この例では--usernameはその文字列内にありません)

2
Komu
psql -h <Host> -p <port> -U <user> -d <db>

/var/lib/pgsql/10/data/pg_hba.confを更新して、認証方法をcertに変更します。詳細については、次のリンクを確認してください。

https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html

1
WesternGun