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

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

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

現象

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

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

さらに、次のエラー メッセージが 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 はい いいえ 信頼されていないソースから証明書をプロビジョニングします (証明書発行機関が、クライアント コンピューターの信頼されたルート証明機関の信頼された機関として一覧表示されていません) いいえ
2 "オフ" はい SQL Server の自己生成証明書 自己署名証明書は、このストアに表示されません。

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

解決方法

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

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

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

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

  1. [Start]<をクリックし、Run をクリックし、「MMC」と入力します。 (MMC は Microsoft 管理コンソールの略称です)。

  2. MMC で、 Certificates を開きます。

  3. [個人用] を展開し、 [証明書] を展開します。

  4. サーバー証明書を右クリックし、 [すべてのタスク- >Export] を選択します。

  5. [次へをクリックして、Certificate エクスポート ウィザードのダイアログ ボックスボックスを超えて移動します。

  6. [いいえ] 確認し、秘密キーをエクスポートしないでください が選択され、[次へ ] を選択

  7. DER エンコードされたバイナリ X.509 (.CER)または Base-64 でエンコードされた X.509 (.CER)が選択され、[次へ] をクリック

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

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

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

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

  2. [ Certificates スナップイン ] ダイアログ ボックスで、[ Computer アカウント] を選択し、[次へ を選択

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

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

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

  6. Trusted Root Certification Authorities ノードを展開し、Certificates サブフォルダーを右クリックし、[ タスクを選択し、 Importを選択します。

  7. Certificate インポート ウィザードでWelcome ページで次へ選択

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

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

  10. File to Import ページで、Next を選択します。

  11. Certificate ストア ページで、既定の選択をそのまま使用し、 Nextを選択します。

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

シナリオ 1 と 2 では、クライアント アプリケーションで Trust Server Certificate 設定を true に設定します。

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

Note

SQL Server Management Studio を使用して SQL Server に接続する場合は、サーバーへの接続 ウィンドウで Options タブを選択し、Trust server certificate オプションを選択します。

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

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

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

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

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

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