次の方法で共有


検証なしで暗号化を使用する

SQL Server は、常に、ログインに関連するネットワーク パケットを暗号化します。 起動時にサーバーに証明書がプロビジョニングされていない場合、SQL Server は、ログイン パケットの暗号化に使用される自己署名証明書を生成します。

アプリケーションでは、接続文字列キーワードまたは接続プロパティを使用して、すべてのネットワーク トラフィックの暗号化を要求することもできます。 IDbInitialize::Initialize でプロバイダー文字列を使用する場合、ODBC および OLE DB のキーワードは "Encrypt" で、IDataInitialize で初期化文字列を使用する場合は ADO と OLE DB の場合は "Use Encryption for Data" です。 これは、SQL Server Configuration Manager で [Force Protocol Encryption ]\(プロトコル暗号化の強制\) オプションを使用して構成することもできます。 既定では、接続のすべてのネットワーク トラフィックを暗号化するには、証明書をサーバーにプロビジョニングする必要があります。

接続文字列キーワードの詳細については、「 SQL Server Native Client での接続文字列キーワードの使用」を参照してください。

証明書がサーバーにプロビジョニングされていない場合に暗号化を使用できるようにするには、SQL Server 構成マネージャーを使用して、[ プロトコル暗号化の強制 ] オプションと [ 信頼サーバー証明書 ] オプションの両方を設定できます。 この場合、検証可能な証明書がサーバーにプロビジョニングされていない場合、暗号化では検証なしで自己署名サーバー証明書が使用されます。

アプリケーションでは、暗号化が確実に行われるよう、"TrustServerCertificate" キーワードまたはその関連する接続属性を使用することもできます。 アプリケーション設定では、SQL Server クライアント構成マネージャーによって設定されたセキュリティ レベルが低下することはありませんが、強化される可能性があります。 たとえば、クライアントに 対して Force Protocol Encryption が設定されていない場合、アプリケーションは暗号化自体を要求できます。 サーバー証明書がプロビジョニングされていない場合でも暗号化を保証するために、アプリケーションは暗号化と "TrustServerCertificate" を要求できます。 ただし、クライアント構成で "TrustServerCertificate" が有効になっていない場合でも、プロビジョニングされたサーバー証明書が必要です。 次の表では、すべてのケースについて説明します。

プロトコル暗号化クライアントの設定を強制する 信頼サーバー証明書クライアントの設定 接続文字列/接続文字列属性 Encrypt/Use Encryption for Data 接続文字列/接続文字列の信頼サーバー証明書 結果
いいえ なし いいえ (既定値) 無視 暗号化は行われません。
いいえ なし イエス いいえ (既定値) 暗号化は、検証可能なサーバー証明書がある場合にのみ行われます。それ以外の場合、接続の試行は失敗します。
いいえ なし イエス イエス 暗号化は常に行われますが、自己署名入りのサーバー証明書を使用することがあります。
イエス いいえ 無視 無視 暗号化は、検証可能なサーバー証明書がある場合にのみ行われます。それ以外の場合、接続の試行は失敗します。
イエス イエス いいえ (既定値) 無視 暗号化は常に行われますが、自己署名入りのサーバー証明書を使用することがあります。
イエス イエス イエス いいえ (既定値) 暗号化は、検証可能なサーバー証明書がある場合にのみ行われます。それ以外の場合、接続の試行は失敗します。
イエス イエス イエス イエス 暗号化は常に行われますが、自己署名サーバー証明書を使用する場合があります。

SQL Server Native Client OLE DB プロバイダー

SQL Server Native Client OLE DB プロバイダーは、DBPROPSET_SQLSERVERDBINIT プロパティ セットに実装されているSSPROP_INIT_TRUST_SERVER_CERTIFICATE データ ソース初期化プロパティを追加して、検証なしで暗号化をサポートします。 さらに、新しい接続文字列キーワード "TrustServerCertificate" が追加されました。 "はい" または "いいえ" の値を受け入れます。no が既定値です。 サービス コンポーネントを使用する場合は、true または false の値を受け入れます。false が既定値です。

DBPROPSET_SQLSERVERDBINIT プロパティ セットの機能強化の詳細については、「 初期化プロパティと承認プロパティ」を参照してください。

SQL Server Native Client ODBC ドライバー

SQL Server Native Client ODBC ドライバーは、 SQLSetConnectAttr および SQLGetConnectAttr 関数に追加して、検証なしで暗号化をサポートします。 SQL_COPT_SS_TRUST_SERVER_CERTIFICATEは、SQL_TRUST_SERVER_CERTIFICATE_YESまたはSQL_TRUST_SERVER_CERTIFICATE_NOを受け入れるように追加されており、SQL_TRUST_SERVER_CERTIFICATE_NOが既定です。 さらに、新しい接続文字列キーワード "TrustServerCertificate" が追加されました。 "はい" または "いいえ" の値を受け入れます。既定値は "no" です。

こちらもご覧ください

SQL Server Native Client の機能