通信データの暗号化機能を利用してデータベースサーバと接続する場合は、以下のように設定してください。
通信データを暗号化する場合のアプリケーションの作成方法を説明します。
暗号化する場合、sslパラメータのプロパティを“true”に設定します。sslパラメータのデフォルトは“false”です。
sslを“true”に設定すると、sslmodeは内部的に“verify-full”として扱われます。
例
設定例1
String url = "jdbc:postgresql://sv1/test"; Properties props = new Properties(); props.setProperty("user","fsepuser"); props.setProperty("password","secret"); props.setProperty("ssl","true");
props.setProperty("sslfactory","org.postgresql.ssl.DefaultJavaSSLFactory"); Connection conn = DriverManager.getConnection(url, props);
設定例2
String url = "jdbc:postgresql://sv1/test?user=fsepuser&password=secret&ssl=true&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory";
Connection conn = DriverManager.getConnection(url);
さらに、データベースサーバの成りすましから防御するためには、Javaに含まれるkeytoolコマンドを使用して、CA証明書をJavaのキーストアにインポートする必要があります。また、その際はsslfactoryパラメータに“ org.postgresql.ssl.DefaultJavaSSLFactory”を指定してください。
詳細については、JDKのドキュメント、または、Oracle社のWebサイトで参照してください。
注意
アプリケーションの接続先切り替え機能を利用するなど、DriverManagerクラスの接続文字列またはデータソースにsslmodeパラメータを指定する場合、sslパラメータの設定は不要です。sslパラメータを設定した場合、sslmodeパラメータの設定値が有効となります。
参照
通信データの暗号化についての詳細は、“PostgreSQL Documentation”の“Server Administration”の“Secure TCP/IP Connections with SSL”を参照してください。