検証を伴わない暗号化の使用
SQL Server は、常に、ログインに関連するネットワーク パケットを暗号化します。 サーバーの起動時に証明書がサーバーに提供されないと、SQL Server はログイン パケットの暗号化に使用される自己署名入りの証明書を生成します。
アプリケーションでは、接続文字列キーワードまたは接続プロパティを使用して、すべてのネットワーク トラフィックの暗号化を要求することもできます。 ODBC と OLE DB で IDbInitialize::Initialize にプロバイダー文字列を使用する場合、キーワードは "Encrypt" です。また、ADO と OLE DB で IDataInitialize に初期化文字列を使用する場合、キーワードは "Use Encryption for Data" です。 この設定は、SQL Server 構成マネージャーで [Force Protocol Encryption] オプションを使用して構成することもできます。 既定では、接続のネットワーク トラフィックをすべて暗号化するには、証明書をサーバーに提供する必要があります。
接続文字列キーワードの詳細については、「SQL Server Native Client での接続文字列キーワードの使用」を参照してください。
証明書がサーバーに提供されていないときに暗号化を有効にするには、SQL Server 構成マネージャーを使用して [Force Protocol Encryption] オプションと [Trust Server Certificate] オプションの両方を設定できます。 この場合、検証可能な証明書がサーバーに提供されなかった場合は、暗号化には検証を伴わない自己署名入りのサーバー証明書を使用します。
アプリケーションでは、暗号化が行われることを保証するために "TrustServerCertificate" キーワードまたはそれに関連する接続属性も使用できます。 アプリケーションの設定によって、SQL Server クライアント構成マネージャーで設定されるセキュリティのレベルを緩和することはできません。ただし、厳密にすることはできます。 たとえば、クライアントに [Force Protocol Encryption] オプションが設定されていない場合、アプリケーションから暗号化自体を要求することができます。 サーバー証明書が提供されなかった場合でも暗号化を保証するには、アプリケーションから暗号化と "TrustServerCertificate" を要求できます。 ただし、クライアントの構成で "TrustServerCertificate" が有効になっていない場合は、サーバー証明書を提供する必要があります。 次の表ですべてのケースを説明します。
[Force Protocol Encryption] クライアント設定 |
[Trust Server Certificate] クライアント設定 |
接続文字列/接続属性 Encrypt/Use Encryption for Data |
接続文字列/接続属性 Trust Server Certificate |
[結果] |
---|---|---|---|---|
可 |
該当なし |
いいえ (既定値) |
無視 |
暗号化は行われません。 |
可 |
該当なし |
可 |
いいえ (既定値) |
暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。 |
可 |
該当なし |
可 |
可 |
暗号化は常に行われますが、自己署名入りのサーバー証明書を使用することがあります。 |
可 |
可 |
無視 |
無視 |
暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。 |
可 |
可 |
いいえ (既定値) |
無視 |
暗号化は常に行われますが、自己署名入りのサーバー証明書を使用することがあります。 |
可 |
可 |
可 |
いいえ (既定値) |
暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。 |
可 |
可 |
可 |
可 |
暗号化は常に行われますが、自己署名入りのサーバー証明書を使用することがあります。 |
SQL Server Native Client OLE DB プロバイダー
SQL Server Native Client OLE DB プロバイダーでは、DBPROPSET_SQLSERVERDBINIT プロパティ セットに実装される SSPROP_INIT_TRUST_SERVER_CERTIFICATE データ ソース初期化プロパティの追加によって、検証を伴わない暗号化がサポートされます。 また、新しい接続文字列のキーワードとして "TrustServerCertificate" が追加されました。 "TrustServerCertificate" は、yes または no を値として受け取ります。既定値は no です。 サービス コンポーネントを使用しているときは、"TrustServerCertificate" は true または false を値として受け取ります。既定値は false です。
DBPROPSET_SQLSERVERDBINIT プロパティ セットに行われた機能強化の詳細については、「初期化プロパティと承認プロパティ」を参照してください。
SQL Server Native Client ODBC ドライバー
SQL Server Native Client ODBC ドライバーでは、SQLSetConnectAttr 関数と SQLGetConnectAttr 関数の追加によって、検証を伴わない暗号化がサポートされます。 SQL_TRUST_SERVER_CERTIFICATE_YES または SQL_TRUST_SERVER_CERTIFICATE_NO を受け取る、SQL_COPT_SS_TRUST_SERVER_CERTIFICATE が追加されました。既定値は SQL_TRUST_SERVER_CERTIFICATE_NO です。 また、新しい接続文字列のキーワードとして "TrustServerCertificate" が追加されました。 "TrustServerCertificate" は、"yes" または "no" を値として受け取ります。既定値は "no" です。