99

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

クライアント側でサーバー証明書を使用してサーバーのみを認証したいだけで、サーバー側でクライアントの信頼性は必要ありません。コマンドを接続して実行するためのクライアントとしてpsqlを使用しています。

私はPostgreSQL8.4とLinuxを使用しています。以下のコマンドでSSLを有効にしてサーバーに接続してみました

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

しかし、私は得ています

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

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

4

8 に答える 8

131

psql9.2 より前のバージョンでは、この URL のような構文をオプションとして受け入れません。

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

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

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

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

于 2012-12-24T14:17:21.803 に答える
31
psql --set=sslmode=require -h localhost -p 2345 -U thirunas \
-d postgres -f test_schema.ddl

Azure のマネージド Postgres データベースに安全に接続するための別の例:

psql --file=product_data.sql --host=hostname.postgres.database.azure.com --port=5432 \
--username=postgres@postgres-esprit --dbname=product_data \
--set=sslmode=verify-full --set=sslrootcert=/opt/ssl/BaltimoreCyberTrustRoot.crt.pem
于 2016-05-13T15:07:36.693 に答える
3

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

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

于 2016-03-10T11:34:20.687 に答える
1

v8 で動作する別のパターンは次のとおりです。

psql -h ホスト名 -p ポート -U ユーザー名 "dbname=db sslmode=require"

于 2021-06-16T21:35:17.920 に答える