フェイルオーバーマネージャークラスターでのSSL認証の設定¶
次の手順で、|variable_prod_name|のSSL認証を有効にします。クラスタ内のデータベースサーバーに接続する場合、接続しているすべてのクライアントがSSL認証を使用する必要があることに注意してください。既存のクライアントで現在使用されている接続方法を変更する必要があります。
|variable_prod_name|でSSLを有効にするにはクラスタでは、次のことが必要です。
server.crtとserver.keyファイルをdataディレクトリに配置します(AdvancedServerインストールの下)。機関によって署名された証明書を購入するか、独自の自己署名証明書を作成できます。自己署名証明書の作成については、次のPostgreSQLコアドキュメントを参照してください。https://www.postgresql.org/docs/10/static/ssl-tcp.html#ssl-certificate-creation
FailoverManagerクラスター内の各データベースの
postgresql.confファイルを変更して、SSLを有効にします。ssl=onpostgresql.confファイルを変更した後、サーバーを再起動する必要があります。
|variable_prod_name|の各ノードの
pg_hba.confファイルを変更しますファイルの先頭に次の行を追加します。hostnossl all all all rejectこの行は、SSL認証を使用していない接続を拒否するようサーバーに指示しています。これにより、接続しているすべてのクライアントにSSL認証が適用されます。pg_hba.confファイルの変更については、次の場所にあるPostgreSQLコアのドキュメントを参照してください。
https://www.postgresql.org/docs/10/static/auth-pg-hba-conf.html
server.crtおよびserver.keyファイルをデータディレクトリに配置した後、証明書をJavaが理解できる形式に変換します。次のコマンドを使用できます。
openssl x509 -in server.crt -out server.crt.der -outform der詳細については、以下をご覧ください。
https://jdbc.postgresql.org/documentation/94/ssl-client.html
次に、証明書をJavaの信頼できる証明書ファイルに追加します。
keytool -keystore $JAVA_HOME/lib/security/cacerts -alias <alias_name> -import -file server.crt.derどこ
$JAVA_HOMEはJavaインストールのホームディレクトリです。<alias_name>任意の文字列を指定できますが、証明書ごとに一意である必要があります。
keytoolコマンドを使用して、利用可能な証明書のリストを確認したり、特定の証明書に関する情報を取得したりできます。keytoolコマンドの使用の詳細については、次のように入力してください。man keytool各データベースサーバーからの証明書は、各エージェントの信頼できる証明書ファイルにインポートする必要があります。cacertsファイルの場所は、システムによって異なる場合があることに注意してください。詳細については、以下をご覧ください。
https://jdbc.postgresql.org/documentation/94/ssl-client.html
efm.propertiesファイルを変更します<jdbc.sslmode>`クラスタ内の各ノードで、 ``jdbc.sslmode` プロパティを設定します。