クライアントの設定¶
クライアントをSSL用に構成するための接続パラメーターがいくつかあります。SSL接続パラメーターと追加の接続プロパティの詳細については、``セクション5.2<#connecting-to-the-database>``__を参照してください。
このセクションでは、異なる値で渡された場合のssl接続パラメーターの動作について詳しく説明します。接続パラメーター ssl=true をドライバーに渡すと、ドライバーはSSL証明書を検証し、ホスト名を検証します。この動作とは反対に、 libpq を使用すると、デフォルトでは検証されないSSL接続になります。
sslmode 接続パラメーターを使用すると、SSL接続をより適切に制御できます。このパラメーターは libpq sslmode パラメーターと同じで、既存のSSLは次のsslmode接続パラメーターを実装します。
sslmode接続パラメーター¶
sslmode=require
このモードでは暗号化が必須になり、暗号化できない場合は接続が失敗する必要があります。サーバーは、このホスト/IPアドレスのSSL接続を受け入れるように構成されており、サーバーがクライアント証明書を認識します。
注釈
このモードでは、JDBCドライバーはすべてのサーバー証明書を受け入れます。
sslmode=verify-ca
sslmode=verify-ca の場合、サーバーは、クライアントに保存されているルート証明書までの証明書チェーンをチェックすることにより検証されます。
sslmode=verify-full
sslmode=verify-full の場合、サーバーのホスト名が検証され、サーバー証明書に保存されている名前と一致することが確認されます。サーバー証明書を検証できない場合、SSL接続は失敗します。このモードは、ほとんどのセキュリティが重要な環境で推奨されます。
証明書の検証に失敗した場合、 sslcert= を試すことができ、 LibPQFactory はクライアント証明書を送信しません。サーバーが証明書を使用して認証するように構成されていない場合は、接続する必要があります。
クライアント証明書、クライアントキー、ルート証明書の場所は、それぞれ sslcert 、 sslkey 、 sslrootcert の設定で上書きできます。これらのデフォルトはそれぞれ /defaultdir/postgresql.crt 、 /defaultdir/postgresql.pk8 、および /defaultdir/root.crt で、defaultdirはUNIXシステムでは${user.home}/。postgresql/、Windowsでは%appdata%/postgresql/です。
このモードでは、SSL接続を確立するときにJDBCドライバーがサーバーのIDを検証し、``中間者``攻撃を防ぎます。これは、サーバー証明書が信頼できる機関によって署名されていること、および接続先のホストが証明書のホスト名と同じであることを確認することでこれを行います。