setEncrypt メソッド (SQLServerDataSource)
encrypt プロパティが有効であるかどうかを示す Boolean 値が設定されます。
構文
public void setEncrypt(boolean encrypt)
パラメーター
encrypt
クライアントと SQL Server の間で TLS (トランスポート層セキュリティ) (以前の SSL (Secure Sockets Layer)) 暗号化が有効である場合は、true です。 それ以外の場合は、 falseです。
解説
encrypt プロパティが true に設定されている場合、サーバーに証明書がインストールされていれば、サーバーとクライアント間で送信されるすべてのデータで TLS 暗号化が SQL Server で確実に使用されることを SQL Server 用 Microsoft JDBC ドライバー は保証します。 既定値は false です。
JDBC ドライバーは、TLS ハンドシェイクの確立を試みる際に、使用中の Java 仮想マシン (JVM) を検出します。
encrypt プロパティが true に設定されている場合、SQL Server 用 Microsoft JDBC ドライバー では、JVM の既定の JSSE セキュリティ プロバイダーを使用して、SQL Server と TLS 暗号化がネゴシエートされます。 既定のセキュリティ プロバイダーでは、TLS 暗号化の正常なネゴシエートに必要なすべての機能がサポートされているとは限りません。 たとえば、既定のセキュリティ プロバイダーでは、SQL Server の TLS/SSL 証明書で使用されている RSA 公開キーのサイズをサポートしていない場合があります。 この場合、既定のセキュリティ プロバイダーでエラーが発生し、その結果 JDBC ドライバーが接続を終了する可能性があります。 この問題を解決するには、次のいずれかを実行します。
サイズの小さい RSA 公開キーを持つサーバー証明書を使用して、SQL Server を構成します。
"<java-home>/lib/security/java.security" セキュリティ プロパティ ファイルで、別の JSSE セキュリティ プロバイダーを使用するように JVM を構成します。
別の JVM を使用します。
encrypt プロパティが指定されていないか、または false に設定されている場合、SQL Server がドライバーによって TLS 暗号化のサポートを強制されることはありません。 SQL Server インスタンスが TLS 暗号化を強制的に使用するように構成されていない場合、接続は暗号化なしで確立します。 SQL Server インスタンスが TLS 暗号化を強制的に使用するように構成されている場合、SQL Server 用 Microsoft JDBC ドライバー では、使用中の JVM が適切に構成されていれば、自動的に TLS 暗号化を有効にし、そうでなければ接続を終了しエラーを生成します。