Microsoft 管理コンソールで SQL Server 用に SSL 暗号化を有効にする方法

適用対象: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise Edition

概要


この資料では、Microsoft 管理コンソール (MMC) を使用して、Microsoft SQL Server を実行しているコンピューターに証明書をインストールする方法について、手順を追って説明します。また、サーバーまたは特定のクライアントで SSL 暗号化を有効にする方法についても説明します。

: この方法を使用して、クラスター化された SQL Server サーバーに証明書をインストールすることはできません。 クラスター化インスタンスの場合は、この資料で後述する「SQL Server のクラスター化環境での SSL 用証明書の有効化」に記載されている方法を参照してください。 

企業内にエンタープライズ証明機関が実装されている場合は、SQL Server スタンドアロン サーバー用の証明書を要求して、その証明書を SSL (Secure Sockets Layer) 暗号化に使用することができます。

サーバーまたはクライアントで、[プロトコルの暗号化を設定する] の設定を有効にすることができます。 

注: サーバー側で [プロトコルの暗号化を設定する] を有効にするには、SQL Server のバージョンによって、サーバー ネットワーク ユーティリティまたは SQL Server 構成マネージャーを使用します。 クライアント側で [プロトコルの暗号化を設定する] を有効にするには、クライアント ネットワーク ユーティリティまたは SQL Server 構成マネージャーを使用します。  

重要: クライアント ネットワーク ユーティリティ (SQL Server 2000 クライアントの場合) または SQL Native Client <version> 構成 (32 ビット) または SQL Server 構成マネージャーの [SQL Native Client <version> の構成] ページを使用して SSL 暗号化を有効にした場合、そのクライアントから接続する SQL Server への接続では必ず SSL 暗号化が要求されます。

サーバー側で [プロトコルの暗号化を設定する] を有効にする場合、そのサーバーに証明書をインストールする必要があります。

クライアント側で [プロトコルの暗号化を設定する] を有効にする場合、サーバー上に証明書がインストールされている必要があります。また、クライアント側では、サーバー証明書を信頼するように、信頼されたルート機関を更新する必要があります。

注: SQL Server を使用している場合に、SQL Server のインスタンスとの暗号化された接続を有効にするには、[ForceEncryption] オプションの値を "はい" に設定する必要があります。 詳細については、SQL Server Books Online の次の場所にある、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。
  

Microsoft 管理コンソール (MMC) を使用してサーバーに証明書をインストールする方法

SSL 暗号化を使用するには、サーバーに証明書をインストールする必要があります。 Microsoft 管理コンソール (MMC) スナップインを使用して証明書をインストールするには、以下の手順を実行します。

MMC スナップインを構成する方法
  1. 証明書スナップインを開くには、以下の手順を実行します。
    1. MMC コンソールを開くには、[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。 [ファイル名を指定して実行] ダイアログ ボックスで次のように入力します。

      MMC
       
    2. [コンソール] メニューの [スナップインの追加と削除] をクリックします。
    3. [追加] をクリックし、[証明書] をクリックします。 もう一度、[追加] をクリックします。
    4. 開くスナップイン (ユーザー アカウント用、サービス アカウント用、コンピューター アカウント用) を確認するダイアログ ボックスが表示されます。 [コンピューター アカウント] を選択します。
    5. [ローカル コンピューター] を選択し、[完了] をクリックします。
    6. [スタンドアロン スナップインの追加] ダイアログ ボックスで [閉じる] をクリックします。
    7. [スナップインの追加と削除] ダイアログ ボックスで [OK] をクリックします。 インストールされている証明書は、[個人] の下にある [証明書] フォルダーに表示されます。
  2. 以下の手順を実行して、MMC スナップインを使用して証明書をインストールします。
    1. 左側のウィンドウで [個人] をクリックします。
    2. 右側のウィンドウ内を右クリックし、[すべてのタスク] をポイントし、[新しい証明書の要求] をクリックします。
    3. [証明書の要求ウィザード] ダイアログ ボックスが表示されます。 [次へ] をクリックします。 証明書の種類として [コンピューター] をクリックします。
    4. [フレンドリ名] ボックスに、証明書のわかりやすい名前を入力するか、空白のままにし、ウィザードの手順を完了します。 ウィザードの手順を完了すると、完全修飾ドメイン名のコンピューター名が付いたフォルダーに証明書が表示されます。
    5. 特定のクライアントに対して暗号化を有効にする場合は、この手順は省略し、この資料の「特定のクライアントで暗号化を有効にする方法」に進みます。

      SQL Server 2000 の場合、サーバーでの暗号化を有効にするには、証明書がインストールされているサーバーでサーバー ネットワーク ユーティリティを起動し、[プロトコルの暗号化を設定する] チェック ボックスをオンにします。 MSSQLServer (SQL Server) サービスを停止して再度開始すると、暗号化が有効になります。 これで、サーバーで SSL 暗号化を使用する準備ができました。

      SQL Server 2005 以降のバージョンの場合、サーバーでの暗号化を有効にするには、SQL Server 構成マネージャーを開き、次の手順を行います。
      1. [SSQL Server 構成マネージャー] で、[SQL Server ネットワークの構成] を展開し、[<server instance> のプロトコル] を右クリックします。次に [プロパティ] を選択します。
      2. [証明書] タブで、[証明書] ドロップダウン メニューから必要な証明書を選択し、[OK] をクリックします。
      3. [フラグ] タブで、[ForceEncryption] ボックスの [はい] を選択し、[OK] をクリックしてダイアログ ボックスを閉じます。
      4. SQL Server サービスを再開します。

SQL Server のクラスター化環境での SSL 用証明書の有効化

SQL Server が接続の暗号化に使用する証明書は、次のレジストリ キーに指定します。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Certificate

このキーには、サーバー内の各証明書を特定する拇印 と呼ばれる証明書プロパティが含まれています。 クラスター化環境では、たとえストアに正しい証明書が存在している場合であっても、このキーが Null に設定されます。 この問題を解決するには、各クラスター ノードに証明書をインストールした後、各クラスター ノードで以下の追加手順を実行する必要があります。
 
  1. FQDN 証明書が格納されている証明書ストアに移動します。 証明書のプロパティ ページで [詳細] タブに移動し、証明書の拇印の値をメモ帳にコピーします。
  2. メモ帳で、拇印の値の、16 進数の文字間のスペースを削除します。
  3. regedit を起動し、次のレジストリ キーに移動し、手順 2 で得られた値をコピーします。
    HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib\Certificate
  4. 現在このノードに SQL 仮想サーバーがある場合は、クラスター内の別のノードにフェールオーバーしてから、レジストリ変更が発生したこのノードを再起動します。
  5. すべてのノードに対してこの手順を繰り返します。

この手順のスクリーンショットについては、MSDN の次のブログ投稿を参照してください。
 

特定のクライアントで暗号化を有効にする方法

クライアントから SSL 暗号化を要求するには、クライアント コンピューターがサーバー証明書を信頼していることと、その証明書が既にサーバー上に存在していることが必要です。 MMC スナップインを使用して、サーバー証明書で使用される信頼されたルート証明機関をエクスポートする必要があります。
  1. サーバー証明書の信頼されたルート証明機関 (CA) をエクスポートするには、以下の手順を実行します。
    1. MMC を起動し、[個人] フォルダー内にある証明書を見つけます。
    2. 証明書名を右クリックし、[開く] をクリックします。
    3. [証明のパス] タブをクリックし、 一番上に表示される項目をメモしておきます。
    4. [信頼されたルート証明機関] フォルダーを開き、手順 c. でメモした証明機関を見つけます。
    5. CA を右クリックし、[すべてのタスク] をポイントし、[エクスポート] をクリックします。
    6. すべてデフォルトの設定のままにし、エクスポートするファイルを、クライアント コンピューターがファイルにアクセス可能なディスク上に保存します。
  2. 以下の手順を実行して、クライアント コンピューター上に証明書をインポートします。
    1. MMC スナップインでクライアント コンピューターを見つけ、[信頼されたルート証明機関] フォルダーを探します。
    2. [信頼されたルート証明機関] を右クリックし、[すべてのタスク] をポイントし、[インポート] をクリックします。
    3. 手順 1. で生成した証明書 (.cer ファイル) を見つけてクリックします。 デフォルトの設定を使用して、ウィザードの残りの手順を完了します。
    4. SQL Server のクライアント ネットワーク ユーティリティを起動します。
    5. [プロトコルの暗号化を設定する] チェック ボックスをオンにします。 これで、クライアントで SSL 暗号化を使用する準備ができました。
       

クライアント接続をテストする方法

クライアント接続をテストするには、以下の 2 つの方法があります。
 
  • SQL Management Studio を使用する方法

    または
  • 接続文字列を変更できる ODBC アプリケーションまたは OLEDB アプリケーションを使用する方法 
SQL Server Management Studio


SQL Server Management Studio を使用してテストするには、以下の手順を実行します。  
  1. SQL Server 構成マネージャーで [SQL Server クライアント <version> 設定] ページに移動します。
  2. プロパティ ウィンドウで、[プロトコルの暗号化を設定する] オプションを [はい] に設定します。
  3. SQL Server Management Studio.を使用して、SQL Server を実行しているサーバーに接続します。
  4. Microsoft ネットワーク モニターまたはネットワーク スニファーを使用して、通信を監視します。

ODBC または OLEDB アプリケーションの接続文字列のサンプル

SQL Native Client のようなプロバイダーからの ODBC または OLEDB の接続文字列を使用する場合は、接続文字列に Encrypt キーワードを追加し、これを true に設定してから、Microsoft ネットワーク モニターまたはネットワーク スニファーのようなツールを使用して通信を監視します。
 

トラブルシューティング

証明書を正常にインストールしても、その証明書が [証明書] タブの [証明書] リストに表示されません。

: [証明書] タブは、SQL Server 構成マネージャーから開く [<InstanceName> のプロトコルのプロパティ] ダイアログ ボックス内にあります。

この問題は、無効な証明書をインストールした可能性があるために発生します。 無効な証明書は [証明書] タブに表示されません。 インストールした証明書が有効であるかどうかを判別するには、以下の手順を実行します。
  1. 証明書スナップインを開きます。これを行うには、「MMC スナップインを構成する方法」セクションの手順 1 を参照してください。
  2. 証明書スナップインで、[個人]、[証明書] の順に展開します。
  3. 右側のウィンドウで、インストールした証明塩を見つけます。
  4. 証明書が次の要件を満たしているかどうかを判別します。
    • 右側のウィンドウで、この証明書の [使用目的 ] 列の値が [サーバー認証] になっている必要があります。
    • 右側のウィンドウで、[発行先] 列の値がサーバー名になっている必要があります。
  5. 証明書をダブルクリックし、証明書が次の要件を満たしているかどうかを判別します。
    • [全般] タブには、次のメッセージが表示されます。
      この証明書に対応する秘密キーを持っています。
    • [詳細] タブでは、[サブジェクト] フィールドの値がサーバー名になっている必要があります。
    • [拡張キー使用法] フィールドの値は、 [サーバー認証(<number>)] になっている必要があります。
    • [証明のパス] タブでは、[証明のパス] の下にサーバー名が表示されている必要があります。
これらの要件のうち 1 つでも満たされていない場合、この証明書は無効です。

詳細情報


エラー 17182 が発生する場合、詳細情報と解決策については、次の資料を参照してください。