クライアントの設定¶
クライアントをSSL用に構成するための接続パラメーターがいくつかあります。 SSL接続パラメータと追加の接続プロパティの詳細については、 セクション5.2を参照してください。
このセクションでは、異なる値で渡された場合の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をは$ {}のuser.home / ISそれぞれのPostgreSQL / UNIXシステムと%のAppData%/ PostgreSQLの/ Windows上。
このモードでは、SSL接続を確立するときに、JDBCドライバーはサーバーのIDを検証し、「中間者」攻撃を防ぎます。これは、サーバー証明書が信頼できる機関によって署名されていること、および接続しているホストが同じであることを確認することによりこれを行います 証明書のホスト名として。
