検証を伴わない暗号化の使用Using Encryption Without Validation

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

SQL ServerSQL Server は、常に、ログインに関連するネットワーク パケットを暗号化します。always encrypts network packets associated with logging in. サーバーの起動時に証明書がサーバーに提供されないと、SQL ServerSQL Server はログイン パケットの暗号化に使用される自己署名入りの証明書を生成します。If no certificate has been provisioned on the server when it starts up, SQL ServerSQL Server generates a self-signed certificate which is used to encrypt login packets.

自己署名証明書では、セキュリティは保証されません。Self-signed certificates do not guarantee security. 暗号化ハンドシェイクは、NT LAN Manager (NTLM) に基づいています。The encrypted handshake is based on NT LAN Manager (NTLM). セキュリティで保護された接続用の SQL Server で検証可能な証明書をプロビジョニングすることを強くお勧めします。It is highly recommended that you provision a verifiable certificate on SQL Server for secure connectivity. 証明書の検証でのみセキュリティで保護された、トランスポート セキュリティ層 (TLS) を作成できます。Transport Security Layer (TLS) can be made secure only with certificate validation.

アプリケーションでは、接続文字列キーワードまたは接続プロパティを使用して、すべてのネットワーク トラフィックの暗号化を要求することもできます。Applications may also request encryption of all network traffic by using connection string keywords or connection properties. キーワードは、プロバイダー文字列を使用する場合、ODBC および OLE DB の"Encrypt"をidbinitialize::initialize、または"Use Encryption for Data"ADO および OLE DB 初期化文字列を使用する場合のIDataInitialize.The keywords are "Encrypt" for ODBC and OLE DB when using a provider string with IDbInitialize::Initialize, or "Use Encryption for Data" for ADO and OLE DB when using an initialization string with IDataInitialize. これは、ことがありますで構成することもSQL ServerSQL ServerConfiguration Manager を使用して、プロトコルの暗号化オプション、およびによって暗号化された接続を要求するクライアントの構成します。This may also be configured by SQL ServerSQL Server Configuration Manager using the Force Protocol Encryption option, and by configuring the client to request encrypted connections. 既定では、接続のネットワーク トラフィックをすべて暗号化するには、証明書をサーバーに提供する必要があります。By default, encryption of all network traffic for a connection requires that a certificate be provisioned on the server. サーバーの証明書を信頼するようにクライアントを設定するには、中間の攻撃に対する脆弱性をなる可能性があります。By setting your client to trust the certificate on the server, you might become vulnerable to man-in-the-middle attacks. サーバーで検証可能な証明書を展開する場合は、FALSE には、証明書を信頼に関するクライアント設定を変更することを確認します。If you deploy a verifiable certificate on the server, ensure that you change the client settings about trust the certificate to FALSE.

接続文字列キーワードについては、次を参照してください。使用した Connection String Keywords with SQL Server Native Client を使用してします。For information about connection string keywords, see Using Connection String Keywords with SQL Server Native Client.

証明書がサーバーに提供されていないときに暗号化を有効にするには、SQL ServerSQL Server 構成マネージャーを使用して [Force Protocol Encryption] オプションと [Trust Server Certificate] オプションの両方を設定できます。To enable encryption to be used when a certificate has not been provisioned on the server, SQL ServerSQL Server Configuration Manager can be used to set both the Force Protocol Encryption and the Trust Server Certificate options. この場合、検証可能な証明書がサーバーに提供されなかった場合は、暗号化には検証を伴わない自己署名入りのサーバー証明書を使用します。In this case, encryption will use a self-signed server certificate without validation if no verifiable certificate has been provisioned on the server.

アプリケーションでは、暗号化が行われることを保証するために "TrustServerCertificate" キーワードまたはそれに関連する接続属性も使用できます。Applications may also use the "TrustServerCertificate" keyword or its associated connection attribute to guarantee that encryption takes place. アプリケーションの設定によって、SQL ServerSQL Server クライアント構成マネージャーで設定されるセキュリティのレベルを緩和することはできません。ただし、厳密にすることはできます。Application settings never reduce the level of security set by SQL ServerSQL Server Client Configuration Manager, but may strengthen it. たとえば、クライアントに [Force Protocol Encryption] オプションが設定されていない場合、アプリケーションから暗号化自体を要求することができます。For example, if Force Protocol Encryption is not set for the client, an application may request encryption itself. サーバー証明書が提供されなかった場合でも暗号化を保証するには、アプリケーションから暗号化と "TrustServerCertificate" を要求できます。To guarantee encryption even when a server certificate has not been provisioned, an application may request encryption and "TrustServerCertificate". ただし、クライアントの構成で "TrustServerCertificate" が有効になっていない場合は、サーバー証明書を提供する必要があります。However, if "TrustServerCertificate" is not enabled in the client configuration, a provisioned server certificate is still required. 次の表ですべてのケースを説明します。The following table describes all cases:

[Force Protocol Encryption] クライアント設定Force Protocol Encryption client setting [Trust Server Certificate] クライアント設定Trust Server Certificate client setting 接続文字列/接続属性 Encrypt/Use Encryption for DataConnection string/connection attribute Encrypt/Use Encryption for Data 接続文字列/接続属性 Trust Server CertificateConnection string/connection attribute Trust Server Certificate 結果Result
いいえNo なしN/A いいえ (既定値)No (default) 無視Ignored 暗号化は行われません。No encryption occurs.
いいえNo なしN/A はいYes いいえ (既定値)No (default) 暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。Encryption occurs only if there is a verifiable server certificate, otherwise the connection attempt fails.
いいえNo なしN/A はいYes はいYes 暗号化は常に行われますが、自己署名入りのサーバー証明書を使用することがあります。Encryption always occurs, but may use a self-signed server certificate.
はいYes いいえNo 無視Ignored 無視Ignored 暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。Encryption occurs only if there is a verifiable server certificate, otherwise the connection attempt fails.
はいYes はいYes いいえ (既定値)No (default) 無視Ignored 暗号化は常に行われますが、自己署名入りのサーバー証明書を使用することがあります。Encryption always occurs, but may use a self-signed server certificate.
はいYes [はい]Yes はいYes いいえ (既定値)No (default) 暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。Encryption occurs only if there is a verifiable server certificate, otherwise the connection attempt fails.
はいYes [はい]Yes [はい]Yes はいYes 暗号化は常に行われますが、自己署名入りのサーバー証明書を使用することがあります。Encryption always occurs, but might use a self-signed server certificate.

注意事項

前の表は、異なる構成で、システムの動作にのみ、ガイドを提供します。The preceding table only provides a guide on the system behavior under different configurations. セキュリティで保護された接続は、クライアントとサーバーの両方が暗号化を必要とすることを確認してください。For secure connectivity, ensure that the client and server both require encryption. また、検証可能な証明書とサーバーが持っていることを確認、 TrustServerCertificateクライアントの設定が FALSE に設定します。Also ensure that the server has a verifiable certificate, and that the TrustServerCertificate setting on the client is set to FALSE.

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

SQL ServerSQL Server Native Client OLE DB プロバイダーには、DBPROPSET_SQLSERVERDBINIT プロパティで実装されて SSPROP_INIT_TRUST_SERVER_CERTIFICATE データ ソース初期化プロパティの追加検証を伴わない暗号化がサポートしています設定します。The SQL ServerSQL Server Native Client OLE DB provider supports encryption without validation through the addition of the SSPROP_INIT_TRUST_SERVER_CERTIFICATE data source initialization property, which is implemented in the DBPROPSET_SQLSERVERDBINIT property set. また、新しい接続文字列のキーワードとして "TrustServerCertificate" が追加されました。In addition, a new connection string keyword, "TrustServerCertificate", as been added. "TrustServerCertificate" は、yes または no を値として受け取ります。既定値は no です。It accepts yes or no values; no is the default. サービス コンポーネントを使用しているときは、"TrustServerCertificate" は true または false を値として受け取ります。既定値は false です。When using service components, it accepts true or false values; false is the default.

DBPROPSET_SQLSERVERDBINIT プロパティ セットに加えられた機能強化の詳細については、次を参照してください。初期化プロパティと承認プロパティします。For more information about enhancements made to the DBPROPSET_SQLSERVERDBINIT property set, see Initialization and Authorization Properties.

SQL Server Native Client ODBC ドライバーSQL Server Native Client ODBC Driver

SQL ServerSQL Server Native Client ODBC ドライバーへの追加検証を伴わない暗号化のサポート、 SQLSetConnectAttrSQLGetConnectAttr関数。The SQL ServerSQL Server Native Client ODBC driver supports encryption without validation through additions to the SQLSetConnectAttr and SQLGetConnectAttr functions. SQL_TRUST_SERVER_CERTIFICATE_YES または SQL_TRUST_SERVER_CERTIFICATE_NO を受け取る、SQL_COPT_SS_TRUST_SERVER_CERTIFICATE が追加されました。既定値は SQL_TRUST_SERVER_CERTIFICATE_NO です。SQL_COPT_SS_TRUST_SERVER_CERTIFICATE has been added to accept either SQL_TRUST_SERVER_CERTIFICATE_YES or SQL_TRUST_SERVER_CERTIFICATE_NO, with SQL_TRUST_SERVER_CERTIFICATE_NO being the default. また、新しい接続文字列のキーワードとして "TrustServerCertificate" が追加されました。In addition, a new connection string keyword, "TrustServerCertificate", has been added. "TrustServerCertificate" は、"yes" または "no" を値として受け取ります。既定値は "no" です。It accepts yes or no values; "no" is the default.

参照See Also

SQL Server Native Client の機能SQL Server Native Client Features