SQL Server への接続を暗号化するための特殊なケース
クライアント コンピューターは、クライアントがトランスポート層セキュリティ (TLS) 暗号化を要求できるようにサーバー証明書を信頼する必要があります。また、その証明書はサーバー上に既に存在している必要があります。 SQL Server 暗号化の最も一般的なシナリオには、次のような環境が必要です。
- SQL Server へのすべての着信クライアント接続に対して暗号化を強制に行います。
- Windows で既に信頼されている公的な商用証明機関からの証明書を使用します。 CA に対応するルート証明書は、ご利用のネットワーク内のすべてのコンピューターに対する信頼されたルート証明機関の証明書ストアにインストールされます。
このシナリオでは、「接続を暗号化するために SQL Server データベース エンジンを構成する」に記載の手順に従って暗号化用に SQL Server を構成した後、暗号化を成功させるために追加のステップを行う必要はありません。 この記事では、「接続を暗号化するために SQL Server データベース エンジンを構成する」に記載されていない、あまり一般的でないシナリオについて、SQL Server への接続を暗号化する手順を説明します。
Note
Microsoft の信頼されたルート プログラムの参加者の完全な一覧については、参加者リスト - Microsoft の信頼されたルート プログラムに関するページを参照してください。
公的な商用証明機関によって発行された証明書を使用し、一部のクライアントのみで暗号化された接続が必要とされる
「証明書を使用できるように SQL Server を構成する」に記載されている手順に従って、SQL Server 上で証明書を構成します。
接続プロパティ内で暗号化キーワードを [Yes] または [True] に指定します。 たとえば、Microsoft ODBC Driver for SQL Server を使用している場合、接続文字列には
Encrypt=yes;
を指定する必要があります。
内部 CA によって発行された証明書、または New-SelfSignedCertificate もしくは makecert を使用して作成された証明書を使用する
シナリオ 1: SQL Server へのすべての接続を暗号化する
「接続を暗号化するために SQL Server データベース エンジンを構成する」の「手順 1: 証明書を使用するように SQL Server を構成する」および「手順 2: SQL Server で暗号化設定を構成する」に記載されている手順を両方とも完了したら、次のいずれかのオプションを使用して、ご利用のクライアント アプリケーションを暗号化に対応するように構成します。
オプション 1: サーバー証明書を信頼するようにクライアント アプリケーションを構成します。 この設定を使用すると、クライアントはサーバー証明書を検証する手順をスキップして、暗号化プロセスを続行します。 たとえば、SQL Server Management Studio (SSMS) 20 以降のバージョンを使用している場合は、[ログイン] ページ (または以前のバージョンの場合は [オプション] ページ) で [信頼できるサーバー証明書] を選択できます。
オプション 2: 各クライアント上で次のステップを行って、証明書の発行元の証明機関を、信頼されたルート証明機関ストアに追加します。
サーバー証明書のエクスポートに関する記事に記載されている手順を使用して、SQL Server を実行しているコンピューターから証明書をエクスポートします。
「証明書のエクスポートとインポート」に記載されている手順を使用して、証明書をインポートします。
シナリオ 2: 一部のクライアントのみが暗号化された接続を必要とする
「接続を暗号化するために SQL Server データベース エンジンを構成する」の「手順 1: 証明書を使用するように SQL Server を構成する」の説明に従って SQL Server で使用できるように証明書を構成したら、次のオプションのいずれかを使用して、暗号化に対応するようにクライアント アプリケーションを構成します。
オプション 1: サーバー証明書を信頼するようにクライアント アプリケーションを構成し、接続プロパティ内の暗号化キーワードを Yes または True に指定します。 たとえば、Microsoft ODBC Driver for SQL Server を使用している場合、接続文字列には Encrypt=Yes;TrustServerCertificate=Yes;
を指定する必要があります。
サーバー証明書と暗号化の詳細については、「TrustServerCertificate の使用」を参照してください。
オプション 2: 各クライアント上で、証明書の発行元の証明機関を信頼されたルート証明機関ストアに追加し、接続文字列内で暗号化パラメーターを [Yes] に指定します。
SQL Server を実行しているコンピューターからのサーバー証明書のエクスポートに関する記事に記載されている手順を使用して、SQL Server を実行しているコンピューターから証明書をエクスポートします。
接続プロパティ内で暗号化キーワードを [Yes] または [True] に指定します。 たとえば、Microsoft OLEDB Driver for SQL Server を使用している場合、接続文字列には Use Encryption for Data = True; を指定する必要があります。
SQL Server によって自動的に作成された自己署名証明書を使用する
シナリオ 1: SQL Server へのすべての着信接続を暗号化する
「接続を暗号化するために SQL Server データベース エンジンを構成する」の「手順 2: SQL Server で暗号化設定を構成する」に記載されている手順を使用して、SQL Server に対する暗号化を有効にします。
サーバー証明書を信頼するようにクライアントを構成します。 サーバー証明書を信頼するように構成することで、クライアントはサーバー証明書を検証する手順をスキップして、暗号化プロセスを続行できます。 たとえば、SQL Server Management Studio (SSMS) 20 以降のバージョンを使用している場合は、[ログイン] ページ (または以前のバージョンの場合は [オプション] ページ) で [信頼できるサーバー証明書] を選択できます。
シナリオ 2: 一部のクライアントのみが暗号化された接続を必要とする
サーバー証明書を信頼するようにクライアント アプリケーションを構成し、接続プロパティ内の暗号化キーワードを Yes または True に指定します。 たとえば、Microsoft ODBC Driver for SQL Server を使用している場合、接続文字列には Encrypt=Yes;TrustServerCertificate=Yes;
を指定する必要があります。
このシナリオでは、SQL Server に追加の構成は必要ありません。
警告
自己署名証明書を使用して暗号化された SSL 接続では、強力なセキュリティを実現できません。これは、自己署名証明書のキーの長さが、CA によって生成された証明書のキーの長さよりも短いためです。 man-in-the-middle (中間者) 攻撃を受ける可能性が高くなります。 運用環境や、インターネットに接続されているサーバーでは、自己署名証明書を使用した SSL に依存しないでください。