SSL 暗号化を使用した接続

このトピックの例では、Java アプリケーションで SSL (Secure Sockets Layer) 暗号化を使用できるようにする接続文字列プロパティの使用方法について説明します。これらの新しい接続文字列プロパティ (encrypttrustServerCertificatetrustStoretrustStorePasswordhostNameInCertificate など) の詳細については、「接続プロパティの設定」を参照してください。

encrypt プロパティが true に設定され、trustServerCertificate プロパティが true に設定されている場合、Microsoft SQL Server 用 JDBC Driver は SQL Server の SSL 証明書を検証しません。これは、通常、テスト環境 (SQL Server インスタンスが自己署名入りの証明書しか備えていない環境など) で接続を許可する場合に必要になります。

次のコード例では、接続文字列内に trustServerCertificate プロパティを設定する方法を示します。

String connectionUrl = 
    "jdbc:sqlserver://localhost:1433;" +
     "databaseName=AdventureWorks;integratedSecurity=true;" +
     "encrypt=true;trustServerCertificate=true";

encrypt プロパティが true に設定され、trustServerCertificate プロパティが false に設定されている場合、Microsoft SQL Server 用 JDBC Driver は SQL Server の SSL 証明書を検証します。サーバー証明書の検証は、SSL ハンドシェイクの一部であり、接続先のサーバーが適切なサーバーであることを保証します。サーバー証明書を検証するには、trustStore 接続プロパティと trustStorePassword 接続プロパティを明示的に使用するか、または基になる Java 仮想マシンのトラスト ストアを暗黙的に使用して、接続時にトラスト マテリアルを提供する必要があります。

trustStore プロパティでは、証明書の trustStore ファイルへのパス (ファイル名を含む) を指定します。このファイルには、クライアントが信頼する証明書の一覧が含まれています。trustStorePassword プロパティでは、trustStore データの整合性の確認に使用するパスワードを指定します。JVM の既定のトラスト ストアの詳細については、「SSL 暗号化のためのクライアントの構成」を参照してください。

次のコード例では、接続文字列内に trustStore プロパティと trustStorePassword プロパティを設定する方法を示します。

String connectionUrl = 
    "jdbc:sqlserver://localhost:1433;" +
     "databaseName=AdventureWorks;integratedSecurity=true;" +
     "encrypt=true; trustServerCertificate=false;" +
     "trustStore=storeName;trustStorePassword=storePassword";

JDBC Driver には、サーバーのホスト名を指定するための追加プロパティである hostNameInCertificate が用意されています。このプロパティの値は、証明書の subject プロパティと一致する必要があります。

次のコード例では、接続文字列内で hostNameInCertificate プロパティを使用する方法を示します。

String connectionUrl = 
    "jdbc:sqlserver://localhost:1433;" +
     "databaseName=AdventureWorks;integratedSecurity=true;" +
     "encrypt=true; trustServerCertificate=false;" +
     "trustStore=storeName;trustStorePassword=storePassword" +
     "hostNameInCertificate=hostName";
注意

または、SQLServerDataSource クラスによって提供される適切な setter メソッドを使用して、接続プロパティの値を設定することもできます。

encrypt プロパティが true に設定され、trustServerCertificate プロパティが false に設定され、接続文字列のサーバー名が SQL Server SSL 証明書のサーバー名に一致しない場合は、次のエラーが発行されます: ドライバーは SSL (Secure Sockets Layer) 暗号化を使用して SQL Server への安全な接続を確立できませんでした。エラー: "java.security.cert.CertificateException: SSL (Secure Sockets Layer) の初期化中に、証明書内のサーバー名の検証が失敗しました。"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值