"リモート サーバーから受信した証明書は、信頼されていない証明機関によって発行されました" というエラーが表示されますSQL Server

この記事は、SQL Serverへの暗号化された接続を作成しようとしたときに発生する問題を解決するのに役立ちます。

元の製品バージョン: SQL Server
元の KB 番号: 2007728

現象

SQL Server に接続する際に、次のエラー メッセージが表示される場合があります。

サーバーとの接続が正常に確立されましたが、ログイン プロセス中にエラーが発生しました。 (プロバイダー: SSL プロバイダー、エラー: 0 - 信頼されていない機関によって証明書チェーンが発行されました。(.Net SqlClient Data Provider)

さらに、次のエラー メッセージが Windows システム イベント ログに記録されます。

Log Name:      System  
Source:        Schannel  
Date:          10/13/2020 3:03:31 PM  
Event ID:      36882  
Task Category: None  
Level:         Error  
Keywords:  
User:        USERNAME  
Computer:     COMPUTERNAME  
Description:  
The certificate received from the remote server was issued by an untrusted certificate authority. Because of this, none of the data contained in the certificate can be validated. The TLS connection request has failed. The attached data contains the server certificate.

原因

このエラーは、検証不可能な証明書を使用してSQL Serverに暗号化された接続を作成しようとすると発生します。 次のような状況で発生する可能性があります。

シナリオ サーバー側の暗号化 クライアント側の暗号化 証明書の種類 信頼されたルート証明機関ストアに存在する証明書発行機関
1 はい 不要 信頼されていないソースから証明書をプロビジョニングします (証明書発行元の機関は、クライアント コンピューターの信頼されたルート証明機関の信頼された機関として一覧表示されません) X
2 オフ はい SQL Server の自動生成された証明書 自己署名証明書はこのストアに表示されません。

SQL Server への暗号化された接続を確立する際に、Secure Channel (Schannel) は、ローカル コンピューター上の信頼されたルート証明機関ストアを検索して、信頼された証明機関の一覧を作成します。 TLS ハンドシェイク中に、サーバーは公開キー証明書をクライアントに送信します。 公開キー証明書の発行者は、証明機関 (CA) と呼ばれます。 クライアントは、証明機関がクライアントに信頼されていることを確認する必要があります。 これは、信頼された CA の公開キーを事前に把握することで実現されます。 前の 2 つのケースのように、信頼されていない証明機関によって発行された証明書が Schannel によって検出されると、[ 現象 ] セクションに一覧表示されたエラー メッセージが表示されます。

解決方法

信頼されていない機関の証明書または自己署名証明書を意図的に使用して SQL Server への接続を暗号化する場合は、次のいずれかのオプションを使用できます。

シナリオ 1 では、暗号化された接続を開始するクライアント コンピューターの信頼されたルート証明機関ストアに証明機関を追加します。 これを行うには、そのシーケンスの次のいくつかのセクションに記載されているクライアント コンピューターの手順で、 サーバー証明書のエクスポートルート証明機関 (CA) のインストール に関するページを完了します。

サーバー証明書をエクスポートします

この例では、 caCert.cer という名前のファイルを証明書ファイルとして使用します。 この証明書ファイルは、サーバーから取得する必要があります。 次の手順では、サーバー証明書をファイルにエクスポートする方法について説明します。

  1. [スタート]、[実行] の順にクリックし、「MMC」と入力します。 (MMC は Microsoft 管理コンソールの頭字語です)。

  2. MMC で証明書を開きます。

  3. [個人]、[証明書] の順に展開します。

  4. サーバー証明書を右クリックし、[ すべてのタスク]、[エクスポート] の順に>選択します

  5. [次へ] をクリックして、証明書のエクスポート ウィザードの [ウェルカム ダイアログ] ボックスの先に移動します。

  6. [いいえ、秘密キーをエクスポートしない] が選択されていることを確認し、[次へ] を選択します。

  7. DER でエンコードされたバイナリ X.509 (.CER) または Base-64 でエンコードされた X.509 (.CER) のいずれかが選択されていることを確認し、[次へ] をクリックします。

  8. エクスポート ファイル名を入力します。

  9. [次へ]、[完了] の順にクリックして証明書をエクスポートします。

クライアント コンピューターにルート証明機関 (CA) をインストールする

  1. クライアント コンピューターで MMC の証明書スナップインを起動し、証明書スナップインを追加します。

  2. [ 証明書スナップイン ] ダイアログ ボックスで、[ コンピューター アカウント] を選択し、[ 次へ] を選択します。

  3. [ コンピューターの選択 ] ウィンドウで、[ ローカル コンピューター: (このコンソールが実行されているコンピューター)] を選択し、[ 完了] を選択します。

  4. [ OK] を 選択して、[ スナップインの追加と削除 ] ダイアログ ボックスを閉じます。

  5. MMC の左側のウィンドウで、[ 証明書 (ローカル コンピューター)] ノードを展開します。

  6. [ 信頼されたルート証明機関 ] ノードを展開し、[ 証明書 ] サブフォルダーを右クリックし、[ すべてのタスク] を選択して、[ インポート] を選択します。

  7. 証明書の インポート ウィザードの [ようこそ] ページで、[ 次へ] を選択します。

  8. [ インポートするファイル ] ページで、[ 参照] を選択します。

  9. caCert.cer証明書ファイルの場所を参照し、ファイルを選択し、[開く] を選択します。

  10. [ インポートするファイル ] ページで、[ 次へ] を選択します。

  11. [ 証明書ストア ] ページで、既定の選択をそのまま使用し、[ 次へ] を選択します。

  12. [ 証明書のインポート ウィザードの完了] ページで 、[ 完了] を選択します。

シナリオ 1 と 2 の場合は、クライアント アプリケーションで [信頼サーバー証明書] 設定を true に設定します。

これを行う方法の詳細については、次のトピックを参照してください。

注:

SQL Server Management Studioを使用している場合は、[オプション] タブを選択し、[接続のプロパティ] タブで [信頼サーバー証明書] オプションを選択します。

注意: 自己署名証明書を使用して暗号化された SSL 接続は、強力なセキュリティを提供しません。 man-in-the-middle 攻撃の影響を受けやすくなります。 本番環境またはインターネットに接続されているサーバーで、自己署名証明書を使用する SSL に依存しないでください。

この記事の前のセクションで説明した構成が意図したものでない場合は、次のいずれかのオプションを使用してこの問題を解決できます。

  • 「データベース エンジンへの暗号化接続を有効にする」の手順に従って暗号化を使用するようにデータベース エンジンを構成する

  • 暗号化が必要ない場合:

    • クライアント アプリケーションで暗号化設定 (存在する場合) を無効にします。

    • SQL Server Configuration Manager を使用してサーバー側の暗号化を無効にします。 これを行う方法の詳細については、「サーバーの 構成」を参照してください。