5.14. Secure Socket Layer (SSL)

5.14.1. SSLの設定

ssl (boolean)

onに設定すると,Pgpool-IIはフロントエンドとバックエンドの両方の通信でのSSLが可能になります。 デフォルトはoffです。

注意: フロントエンド接続でSSLを動作させるには、ssl_keyssl_certが設定されてなければなりません。

注意: SSLサポートを有効にするためには、Pgpool-IIをOpenSSLサポート付きでビルドする必要があります。 Pgpool-IIのビルドについて詳細は項2.5をご覧ください。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_key (string)

フロントエンドとの接続に使用するプライベートキーファイルのパスを指定します。 相対パスで指定した場合、Pgpool-IIの設定ファイルディレクトリが基準となります。 このオプションのデフォルト値はありません。 設定がない場合は、フロントエンドとの接続でSSLが使用されなくなります。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_cert (string)

フロントエンドとの接続に使用する公開x509証明書のパスを指定します。 相対パスで指定した場合、Pgpool-IIの設定ファイルディレクトリが基準となります。 このオプションのデフォルト値はありません。 設定がない場合は、フロントエンドとの接続でSSLが使用されなくなります。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_ca_cert (string)

PEM形式のCAルート証明書のパスを指定します。 これはバックエンドサーバ証明書の検証に用いられます。 このオプションはOpenSSL verify(1)コマンドにおける-CAfileオプションと同様の機能を提供します。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_ca_cert_dir (string)

PEM形式のCAルート証明書ファイルが格納されているディレクトリへのパスを指定します。 これはバックエンドサーバ証明書の検証に用いられます。 相対パスで指定した場合、Pgpool-IIの設定ファイルディレクトリが基準となります。 このオプションはOpenSSL verify(1)コマンドにおける-CApathオプションと同様の機能を提供します。

デフォルトでは値が設定されておらず検証は行われません。 このオプションが設定されていない場合においても、ssl_ca_certオプションが設定されている場合には検証が行われます。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_crl_file (string)

SSLサーバ証明書失効リスト(CRL)が入っているファイルのパスを設定します。 相対パスで指定した場合、Pgpool-IIの設定ファイルディレクトリが基準となります。 デフォルトは空で、この場合CRLファイルは読み込まれません。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_ciphers (string)

SSL接続で使用できるSSL暗号スイートのリストを指定します。 設定構文と使用可能な値のリストについてはOpenSSLパッケージの ciphersマニュアルをご覧ください。 TLSバージョン1.2あるいはそれ以下のバージョンのみが影響を受けます。 今の所、TLSバージョン1.3接続で使用される暗号の選択を制御する設定はありません。 デフォルト値はHIGH:MEDIUM:+3DES:!aNULLで、PostgreSQLと同じです。 この値が選ばれた理由については、PostgreSQLのマニュアルをご覧ください。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_prefer_server_ciphers (boolean)

クライアントではなく、サーバ指定のSSL暗号を選択します。 デフォルト値はoffです。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_ecdh_curve (string)

ECDHキー交換で使われる曲線の名前を指定します。 接続する全てのクライアントがこの設定をサポートしている必要があります。 サーバの楕円曲線キーで使用されるのと同じ曲線である必要はありません。 デフォルト値はprime256v1です。

よく使われる曲線の OpenSSL 名は、 prime256v1 (NIST P-256), secp384r1 (NIST P-384), secp521r1 (NIST P-521) です。 利用できる曲線の完全なリストはopenssl ecparam -list_curvesで得られます。 ただし、TLSではこのすべてが利用できるわけではありません。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_dh_params_file (string)

いわゆる短命DH系SSL暗号で使用するディフィー・ヘルマンパラメータを格納するファイル名を指定します。 デフォルトは空で、この場合はコンパイル時に決められたデフォルトのDHパラメータが使用されます。 攻撃者が、よく知られたコンパイル時設定のDHパラメータを解読しようとしている場合には、カスタムDHパラメータを使うことでその危険性を低減できます。 openssl dhparam -out dhparams.pem 2048を使って、独自のDHパラメータファイルを作ることができます。

このパラメータはサーバ起動時にのみ設定可能です。

ssl_passphrase_command (string)

秘密鍵などのSSLファイルを復号する際に、パスフレーズの入手が必要な時に起動される外部コマンドを設定します。 デフォルトではこのパラメータは空文字で、この場合はパスフレーズが要求されてもSSLファイルはロードされません。

このコマンドは、パスフレーズを標準出力に書き出し、コード0で終了しなければなりません。 パラメータの値の%pはプロンプト文字列に置き換えられます。 (%を使いたい場合は%%としてください。) プロンプト文字列はおそらく空白文字を含むので、適切に引用符付けするように注意してください。 出力の最後に一個の改行があれば、削除されます。

このコマンドは実際にはパスフレーズ用にユーザにプロンプトを表示する必要はありません。 ファイルからパスフレーズが読めるなら、キーチェーン機構やその他から取得します。 選択された仕組みが適切にセキュアかどうかを確認するのはユーザ次第です。

このパラメータはサーバ起動時にのみ設定可能です。

5.14.2. SSL証明書の生成

証明書の扱いについてはこのマニュアルの範囲外です。 PostgreSQLドキュメントSSLによる安全なTCP/IP接続の章に自分で認証する証明書を作成するコマンドの例があります。