データベース エンジンへの暗号化接続の有効化Enable Encrypted Connections to the Database Engine

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

このトピックでは、 SQL Server データベース エンジンSQL Server Database Engine 構成マネージャーを使用して データベース エンジンDatabase Engine の証明書を指定することにより、 SQL ServerSQL Server のインスタンスへの暗号化接続を有効にする方法について説明します。This topic describes how to enable encrypted connections for an instance of the SQL Server データベース エンジンSQL Server Database Engine by specifying a certificate for the データベース エンジンDatabase Engine using SQL ServerSQL Server Configuration Manager. サーバー コンピューターには証明書を提供し、クライアント マシンは証明書のルート機関を信頼するように設定する必要があります。The server computer must have a certificate provisioned, and the client machine must be set up to trust the certificate's root authority. 提供は、証明書を Windows にインポートすることでインストールする処理です。Provisioning is the process of installing a certificate by importing it into Windows.

重要

SSL (Secure Sockets Layer) は、SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降では廃止されています。Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), Secure Sockets Layer (SSL) has been discontinued. 代わりに、トランスポート層セキュリティ (TLS) を使用してください。Use Transport Layer Security (TLS) instead.

トランスポート層セキュリティ (TLS)Transport Layer Security (TLS)

SQL ServerSQL Server でトランスポート層セキュリティ (TLS) を使用して、SQL ServerSQL Server のインスタンスとクライアント アプリケーション間でネットワーク送信されるデータを暗号化できます。can use Transport Layer Security (TLS) to encrypt data that is transmitted across a network between an instance of SQL ServerSQL Server and a client application. TSL 暗号化はプロトコル レイヤー内で実行され、サポートされるすべての SQL ServerSQL Server クライアントがこれを使用できます。The TLS encryption is performed within the protocol layer and is available to all supported SQL ServerSQL Server clients. TSL は、クライアント接続で暗号化が要求された場合のサーバー検証に使用できます。TLS can be used for server validation when a client connection requests encryption. SQL ServerSQL Server のインスタンスが公的な証明機関から証明書を割り当てられたコンピューターで実行されている場合、そのコンピューターの ID と SQL ServerSQL Server のインスタンスは、信頼されているルート機関につながる証明書のチェーンにより保証されます。If the instance of SQL ServerSQL Server is running on a computer that has been assigned a certificate from a public certification authority, identity of the computer and the instance of SQL ServerSQL Server is vouched for by the chain of certificates that lead to the trusted root authority. このようなサーバー検証では、サーバーが使用する証明書のルート機関が信頼されるよう、クライアント アプリケーションが実行されているコンピューターが構成されている必要があります。Such server validation requires that the computer on which the client application is running be configured to trust the root authority of the certificate that is used by the server. 自己署名証明書を使用して暗号化を行うことは可能であり、次のセクションで説明していますが、自己署名証明書が提供する保護には制限があります。Encryption with a self-signed certificate is possible and is described in the following section, but a self-signed certificate offers only limited protection. TLS で使用される暗号化のレベル (40 ビットまたは 128 ビット) は、アプリケーション コンピューターとデータベース コンピューターで実行されている Microsoft Windows オペレーティング システムのバージョンによって異なります。The level of encryption used by TLS, 40-bit or 128-bit, depends on the version of the Microsoft Windows operating system that is running on the application and database computers.

警告

40 ビットの暗号化レベルの使用は、安全でないと見なされています。Usage of 40-bit encryption level is considered unsafe.

警告

自己署名証明書を使用して暗号化される TLS 接続では、強力なセキュリティは提供されません。TLS connections that are encrypted by using a self-signed certificate do not provide strong security. このような接続では、man-in-the-middle アタックによる被害を受けやすくなります。They are susceptible to man-in-the-middle attacks. 実稼働環境やインターネットに接続しているサーバーでは、自己署名証明書を使用した TLS 接続は使用しないことをお勧めします。You should not rely on TLS using self-signed certificates in a production environment or on servers that are connected to the Internet.

TLS 暗号化を有効にすると、SQL ServerSQL Server のインスタンスとアプリケーション間でネットワーク送信されるデータのセキュリティが強化されます。Enabling TLS encryption increases the security of data transmitted across networks between instances of SQL ServerSQL Server and applications. ただし、SQL ServerSQL Server とクライアント アプリケーション間のすべてのトラフィックが TLS で暗号化される場合は、次の追加処理が必要です。However, when all traffic between SQL ServerSQL Server and a client application is encrypted using TLS, the following additional processing is required:

  • 接続時に、追加のネットワーク ラウンドトリップが必要です。An extra network roundtrip is required at connect time.
  • アプリケーションから SQL ServerSQL Server インスタンスに送信されたパケットは、クライアント TLS スタックによって暗号化され、サーバー TLS スタックによって暗号化解除される必要があります。Packets sent from the application to the instance of SQL ServerSQL Server must be encrypted by the client TLS stack and decrypted by the server TLS stack.
  • SQL ServerSQL Server インスタンスからアプリケーションに送信されたパケットは、サーバー TLS スタックによって暗号化され、クライアント TLS スタックによって暗号化解除される必要があります。Packets sent from the instance of SQL ServerSQL Server to the application must be encrypted by the server TLS stack and decrypted by the client TLS stack.

RemarksRemarks

サーバー認証用の証明書が発行されている必要があります。The certificate must be issued for Server Authentication. 証明書の名前は、コンピューターの完全修飾ドメイン名 (FQDN) である必要があります。The name of the certificate must be the fully qualified domain name (FQDN) of the computer.

証明書は、コンピューター上のユーザーにローカルに格納されます。Certificates are stored locally for the users on the computer. SQL ServerSQL Server が使用する証明書をインストールするには、ローカル管理者特権を持つアカウントで SQL ServerSQL Server 構成マネージャーを実行している必要があります。To install a certificate for use by SQL ServerSQL Server, you must be running SQL ServerSQL Server Configuration Manager with an account that has local administrator privileges.

クライアントは、サーバーが使用する証明書の所有権を検証できる必要があります。The client must be able to verify the ownership of the certificate used by the server. サーバー証明書に署名した証明機関の公開キー証明書をクライアントが持っている場合は、それ以上の構成は必要ありません。If the client has the public key certificate of the certification authority that signed the server certificate, no further configuration is necessary. MicrosoftMicrosoft Windows には、多くの証明機関の公開キー証明書が含まれています。Windows includes the public key certificates of many certification authorities. サーバー証明書に署名した公的または私的な証明機関に対する公開キー証明書をクライアントが持っていない場合は、サーバー証明書に署名した証明機関の公開キー証明書をインストールする必要があります。If the server certificate was signed by a public or private certification authority for which the client does not have the public key certificate, you must install the public key certificate of the certification authority that signed the server certificate.

注意

フェールオーバー クラスターで暗号化を使用する場合、フェールオーバー クラスター内のすべてのノードに対して、仮想サーバーの完全修飾 DNS 名を使用してサーバー証明書をインストールする必要があります。To use encryption with a failover cluster, you must install the server certificate with the fully qualified DNS name of the virtual server on all nodes in the failover cluster. たとえば、test1.*<ご自分の会社>*.comtest2.*<ご自分の会社>*.com という 2 つのノードのクラスターと、virtsql という仮想サーバーがあるとします。この場合、両方のノードに virtsql.*<ご自分の会社>*.com の証明書をインストールする必要があります。For example, if you have a two-node cluster, with nodes named test1.*<your company>*.com and test2.*<your company>*.com, and you have a virtual server named virtsql, you need to install a certificate for virtsql.*<your company>*.com on both nodes. [SQL Server ネットワークの構成][virtsql のプロトコル] プロパティ ボックスの [強制的に暗号化] オプションを [はい] に設定します。You can set the value of the ForceEncryption option on the Protocols for virtsql property box of SQL Server Network Configuration to Yes.

注意

Azure VM 上の SQL ServerSQL Server への Azure Search インデクサーからの暗号化接続を作成するには、「Azure VM での Azure Search インデクサーから SQL Server への接続の構成」を参照してください。When creating encrypted connections for an Azure Search indexer to SQL ServerSQL Server on an Azure VM, see Configure a connection from an Azure Search indexer to SQL Server on an Azure VM.

証明書の要件Certificate Requirements

SQL ServerSQL Server で TLS 証明書を読み込むには、証明書が次の条件を満たしている必要があります。For SQL ServerSQL Server to load a TLS certificate, the certificate must meet the following conditions:

  • 証明書がローカル コンピューターの証明書ストアまたは現在のユーザーの証明書ストアに存在すること。The certificate must be in either the local computer certificate store or the current user certificate store.

  • SQL ServerSQL Server のサービス アカウントに、TLS 証明書にアクセスするアクセス許可があること。The SQL ServerSQL Server Service Account must have the necessary permission to access the TLS certificate.

  • 現在のシステム時刻が証明書の Valid from プロパティから証明書の Valid to プロパティまでの範囲であること。The current system time must be after the Valid from property of the certificate and before the Valid to property of the certificate.

  • 証明書がサーバー認証に使用されていること。The certificate must be meant for server authentication. つまり、証明書の [拡張キー使用法] プロパティで [サーバー認証] (1.3.6.1.5.5.7.3.1) が指定されている必要があります。This requires the Enhanced Key Usage property of the certificate to specify Server Authentication (1.3.6.1.5.5.7.3.1).

  • 証明書が AT_KEYEXCHANGEKeySpec オプションを使用して作成されていること。The certificate must be created by using the KeySpec option of AT_KEYEXCHANGE. 通常、証明書のキー使用法プロパティ (KEY_USAGE) には、キーの暗号化 (CERT_KEY_ENCIPHERMENT_KEY_USAGE) も含まれます。Usually, the certificate's key usage property (KEY_USAGE) will also include key encipherment (CERT_KEY_ENCIPHERMENT_KEY_USAGE).

  • 証明書の Subject プロパティで、共通名 (CN) がサーバー コンピューターのホスト名または完全修飾ドメイン名 (FQDN) と同一であると示されていること。The Subject property of the certificate must indicate that the common name (CN) is the same as the host name or fully qualified domain name (FQDN) of the server computer. ホスト名を使用するときは、証明書で DNS サフィックスを指定する必要があります。When using the host name, the DNS suffix must be specified in the certificate. SQL ServerSQL Server がフェールオーバー クラスターで実行されている場合、共通名は仮想サーバーのホスト名または FQDN と同じである必要があり、証明書がフェールオーバー クラスター内のすべてのノードにプロビジョニングされる必要があります。If SQL ServerSQL Server is running on a failover cluster, the common name must match the host name or FQDN of the virtual server and the certificates must be provisioned on all nodes in the failover cluster.

  • ワイルドカード証明書は、SQL Server 2008 R2SQL Server 2008 R2 および SQL Server 2008 R2SQL Server 2008 R2 Native Client (SNAC) でサポートされています。SQL Server 2008 R2SQL Server 2008 R2 and the SQL Server 2008 R2SQL Server 2008 R2 Native Client (SNAC) support wildcard certificates. その後、SNAC は廃止され、Microsoft OLE DB Driver for SQL ServerMicrosoft ODBC Driver for SQL Server に置き換わりました。SNAC has since been deprecated and replaced with the Microsoft OLE DB Driver for SQL Server and Microsoft ODBC Driver for SQL Server. 他のクライアントでは、ワイルドカード証明書がサポートされていない可能性があります。Other clients might not support wildcard certificates. 詳細については、クライアントのドキュメントと KB 258858 を参照してください。For more information, see the client documentation and KB 258858.
    SQL Server 構成マネージャーを使用して、ワイルドカード証明書を選択することはできません。Wildcard certificate cannot be selected by using the SQL Server Configuration Manager. ワイルドカード証明書を使うには、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib のレジストリ キーを編集し、Certificate の値に証明書の拇印を (スペースを含めずに) 入力する必要があります。To use a wildcard certificate, you must edit the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib registry key, and enter the thumbprint of the certificate, without spaces, to the Certificate value.

    警告

    レジストリを誤って編集すると、システムに重大な障害が発生する場合があります。Incorrectly editing the registry can severely damage your system. レジストリを変更する前に、コンピューター上のすべての重要なデータをバックアップしてください。Before making changes to the registry, we recommend that you back up any valued data on the computer.

1 台のサーバーに証明書をプロビジョニング (インストール) するにはTo provision (install) a certificate on a single server

SQL Server 2019 (15.x)SQL Server 2019 (15.x) で、SQL Server 構成マネージャーに証明書の管理が統合されました。With SQL Server 2019 (15.x)SQL Server 2019 (15.x), certificate management is integrated into the SQL Server Configuration Manager. SQL Server 2019 (15.x)SQL Server 2019 (15.x) の SQL Server 構成マネージャーは、SQL ServerSQL Server の以前のバージョンで使用できます。SQL Server Configuration Manager for SQL Server 2019 (15.x)SQL Server 2019 (15.x) can be used with earlier versions of SQL ServerSQL Server. 単一の SQL ServerSQL Server インスタンスに証明書を追加する方法については、「証明書の管理 (SQL Server 構成マネージャー)」を参照してください。Refer to Certificate Management (SQL Server Configuration Manager) to add a certificate on a single SQL ServerSQL Server instance.

SQL Server 2017 (14.x)SQL Server 2017 (14.x) を介して SQL Server 2012 (11.x)SQL Server 2012 (11.x) を使用する場合に、SQL Server 2019 (15.x)SQL Server 2019 (15.x) の SQL Server 構成マネージャーが使用できない場合は、次の手順に従ってください。If using SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017 (14.x)SQL Server 2017 (14.x), and SQL Server Configuration Manager for SQL Server 2019 (15.x)SQL Server 2019 (15.x) is not available, follow these steps:

  1. [スタート] メニューの [ファイル名を指定して実行] をクリックし、 [名前] ボックスに「 MMC 」と入力して [OK] をクリックします。On the Start menu, click Run, and in the Open box, type MMC and click OK.

  2. MMC コンソールの [ファイル] メニューで、 [スナップインの追加と削除] をクリックします。In the MMC console, on the File menu, click Add/Remove Snap-in.

  3. [スナップインの追加と削除] ダイアログ ボックスで [追加] をクリックします。In the Add/Remove Snap-in dialog box, click Add.

  4. [スタンドアロン スナップインの追加] ダイアログ ボックスで [証明書] をクリックし、次に [追加] をクリックします。In the Add Standalone Snap-in dialog box, click Certificates, click Add.

  5. [証明書スナップイン] ダイアログ ボックスで [コンピューター アカウント] をクリックし、 [完了] をクリックします。In the Certificates snap-in dialog box, click Computer account, and then click Finish.

  6. [スタンドアロン スナップインの追加] ダイアログ ボックスで [閉じる] をクリックします。In the Add Standalone Snap-in dialog box, click Close.

  7. [スナップインの追加と削除] ダイアログ ボックスで [OK] をクリックします。In the Add/Remove Snap-in dialog box, click OK.

  8. [証明書] スナップインで、 [証明書][個人] の順に展開し、 [証明書] を右クリックします。次に [すべてのタスク] をポイントし、 [インポート] をクリックします。In the Certificates snap-in, expand Certificates, expand Personal, and then right-click Certificates, point to All Tasks, and then click Import.

  9. インポートした証明書を右クリックし、 [すべてのタスク] をポイントして、 [秘密キーの管理] をクリックします。Right-click the imported certificate, point to All Tasks, and then click Manage Private Keys. [セキュリティ] ダイアログ ボックスで、SQL ServerSQL Server サービス アカウントが使用するユーザー アカウントに読み取りアクセス許可を追加します。In the Security dialog box, add read permission for the user account used by the SQL ServerSQL Server service account.

  10. [証明書のインポート ウィザード] を完了して証明書をコンピューターに追加し、MMC コンソールを閉じます。Complete the Certificate Import Wizard, to add a certificate to the computer, and close the MMC console. コンピューターへの証明書の追加の詳細については、Windows のマニュアルを参照してください。For more information about adding a certificate to a computer, see your Windows documentation.

複数のサーバーに証明書をプロビジョニング (インストール) するにはTo provision (install) a certificate across multiple servers

SQL Server 2019 (15.x)SQL Server 2019 (15.x) で、SQL Server 構成マネージャーに証明書の管理が統合されました。With SQL Server 2019 (15.x)SQL Server 2019 (15.x), certificate management is integrated into the SQL Server Configuration Manager. SQL Server 2019 (15.x)SQL Server 2019 (15.x) の SQL Server 構成マネージャーは、SQL ServerSQL Server の以前のバージョンで使用できます。SQL Server Configuration Manager for SQL Server 2019 (15.x)SQL Server 2019 (15.x) can be used with earlier versions of SQL ServerSQL Server. フェールオーバー クラスター構成または可用性グループ構成に証明書を追加するには、「証明書の管理 (SQL Server 構成マネージャー)」を参照してください。Refer to Certificate Management (SQL Server Configuration Manager) to add a certificate in a Failover Cluster configuration or in an Availability Group configuration.

SQL Server 2017 (14.x)SQL Server 2017 (14.x) を介して SQL Server 2012 (11.x)SQL Server 2012 (11.x) を使用する場合に、SQL Server 2019 (15.x)SQL Server 2019 (15.x) の SQL Server 構成マネージャーが使用できない場合は、各サーバーに対して、「1 台のサーバーに証明書をプロビジョニング (インストール) するには」の手順を実行します。If using SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017 (14.x)SQL Server 2017 (14.x), and SQL Server Configuration Manager for SQL Server 2019 (15.x)SQL Server 2019 (15.x) is not available, follow the steps in section To provision (install) a certificate on a single server for every server.

サーバー証明書をエクスポートするにはTo export the server certificate

  1. [証明書] スナップインで、 [証明書] / [個人] フォルダーで証明書を探し、 [証明書] を右クリックします。次に [すべてのタスク] をポイントし、 [エクスポート] をクリックします。From the Certificates snap-in, locate the certificate in the Certificates / Personal folder, right-click the Certificate, point to All Tasks, and then click Export.

  2. 証明書のエクスポート ウィザードを実行して、証明書ファイルを使いやすい場所に格納します。Complete the Certificate Export Wizard, storing the certificate file in a convenient location.

暗号化された接続を強制するサーバーを構成するにはTo configure the server to force encrypted connections

重要

SQL Server サービス アカウントは、SQL Server で暗号化を強制するために使用される証明書の読み取りアクセス許可を持っている必要があります。The SQL Server Service Account must have read permissions on the certicate used to force encryption on the SQL Server. 特権のないサービス アカウントの場合、読み取りアクセス許可を証明書に追加する必要があります。For a non-privileged service account, read permissions will need to be added to the certificate. この操作に失敗すると、SQL Server サービスを再起動できなくなる可能性があります。Failure to do so can cause the SQL Server service restart to fail.

  1. SQL Server 構成マネージャーで、 [SQL Server ネットワークの構成] を展開し、 [ <server instance> のプロトコル] を右クリックします。次に [プロパティ] を選びます。In SQL Server Configuration Manager, expand SQL Server Network Configuration, right-click Protocols for <server instance>, and then selectProperties.

  2. [ <instance name> のプロトコル][プロパティ] ダイアログ ボックスの [証明書] タブで、 [証明書] ボックスのドロップダウンから必要な証明書を選択し、 [OK] をクリックします。In the Protocols for <instance name> Properties dialog box, on the Certificate tab, select the desired certificate from the drop-down for the Certificate box, and then click OK.

  3. [フラグ] タブの [ForceEncryption] ボックスの一覧の [はい] をクリックし、 [OK] をクリックしてダイアログ ボックスを閉じます。On the Flags tab, in the ForceEncryption box, select Yes, and then click OK to close the dialog box.

  4. SQL ServerSQL Server サービスを再開します。Restart the SQL ServerSQL Server service.

注意

クライアントとサーバーの間で安全な接続を確立するには、暗号化された接続を要求するようにクライアントを構成します。To ensure secure connectivity between client and server, configure the client to request encrypted connections. 詳細については、この記事の後半で説明します。More details are explained later in this article.

暗号化された接続を要求するクライアントを構成するにはTo configure the client to request encrypted connections

  1. 元の証明書ファイルまたはエクスポートした証明書ファイルを、クライアント コンピューターにコピーします。Copy either the original certificate or the exported certificate file to the client computer.

  2. クライアント コンピューターで、 証明書 スナップインを使用して、ルート証明書またはエクスポートした証明書ファイルをインストールします。On the client computer, use the Certificates snap-in to install either the root certificate or the exported certificate file.

  3. SQL Server 構成マネージャーを使用する場合、 [SQL Server Native Client の構成] を右クリックして、 [プロパティ] をクリックします。Using SQL Server Configuration Manager, right-click SQL Server Native Client Configuration, and then click Properties.

  4. [フラグ] ページの [プロトコルの暗号化を設定する] ボックスで、 [はい] をクリックします。On the Flags page, in the Force protocol encryption box, click Yes.

SQL Server Management Studio から接続を暗号化するにはTo encrypt a connection from SQL Server Management Studio

  1. オブジェクト エクスプローラー ツール バーで [接続] をクリックし、 [データベース エンジン] をクリックします。On the Object Explorer toolbar, click Connect, and then click Database Engine.

  2. [サーバーへの接続] ダイアログ ボックスで接続情報を入力し、 [オプション] をクリックします。In the Connect to Server dialog box, complete the connection information, and then click Options.

  3. [接続のプロパティ] タブで [暗号化接続] をクリックします。On the Connection Properties tab, click Encrypt connection.

インターネット プロトコル セキュリティ (IPSec)Internet Protocol Security (IPSec)

SQL ServerSQL Server のデータは、IPSec を使用して、転送時に暗号化することができます。data can be encrypted during transmission by using IPSec. IPSec は、クライアントとサーバーのオペレーティング システムによって提供されます。SQL ServerSQL Server は構成する必要がありません。IPSec is provided by the client and server operating systems and requires no SQL ServerSQL Server configuration. IPSec の詳細については、Windows のマニュアルまたはネットワークに関するドキュメントを参照してください。For information about IPSec, see your Windows or networking documentation.

参照See Also

Microsoft SQL Server の TLS 1.2 サポート TLS 1.2 support for Microsoft SQL Server
SQL Server のアクセスを許可するための Windows ファイアウォールの構成 Configure the Windows Firewall to Allow SQL Server Access
SQL Server の暗号化SQL Server Encryption