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 | はい | いいえ | 信頼されていないソースから証明書をプロビジョニングします (証明書発行機関が、クライアント コンピューターの信頼されたルート証明機関の信頼された機関として一覧表示されていません) | いいえ |
2 | "オフ" | はい | SQL Server の自動生成された証明書 | 自己署名証明書は、このストアに表示されません。 |
SQL Server への暗号化された接続を確立する際に、Secure Channel (Schannel) は、ローカル コンピューター上の信頼されたルート証明機関ストアを検索して、信頼された証明機関の一覧を作成します。 サーバーでは、TLS ハンドシェイクの際にクライアントに公開キー証明書が送信されます。 公開キー証明書の発行者は証明機関 (CA) と呼ばれます。 クライアントは、証明機関がクライアントに信頼されていることを確認する必要があります。 これは、信頼された CA の公開キーを事前に把握することで実現されます。 前の 2 つのケースなど、信頼されていない証明機関によって発行された証明書が Schannel によって検出されると、 Symptoms セクションに一覧表示されているエラー メッセージが表示されます。
解決方法
信頼されていない機関の証明書または自己署名証明書を意図的に使用して SQL Server への接続を暗号化する場合は、次のいずれかのオプションを使用できます。
シナリオ 1 では、暗号化された接続を開始するクライアント コンピューターの信頼されたルート証明機関ストアに証明機関を追加します。 これを行うには、 サーバー証明書のエクスポート を完了し クライアント コンピューターにルート証明機関 (CA) をインストールします その順序の次のいくつかのセクションに記載されている手順を実行します。
サーバー証明書をエクスポートする
この例では、 caCert.cer という名前のファイルを証明書ファイルとして使用します。 この証明書ファイルをサーバーから入手する必要があります。 次の手順は、サーバー証明書をファイルにエクスポートする方法を示しています。
[スタート]、[実行] の順にクリックし、「MMC」と入力します。 (MMC は Microsoft 管理コンソールの略称です)。
MMC で証明書を開きます。
[個人用] を展開し、 [証明書] を展開します。
サーバー証明書を右クリックし、 [すべてのタスク- >Export] を選択します。
[次へをクリックして、Certificate エクスポート ウィザードのダイアログ ボックスボックスを超えて移動します。
[いいえ] 確認し、秘密キーをエクスポートしないでください が選択され、[次へ ] を選択。
DER でエンコードされたバイナリ X.509 (.CER) または Base-64 でエンコードされた X.509 (.CER) のいずれかが選択されていることを確認し、[次へ] をクリックします。
エクスポート ファイルの名前を入力します。
[次へ]、[完了] の順にクリックして証明書をエクスポートします。
クライアント コンピューターにルート証明機関 (CA) をインストールする
クライアント コンピューターで MMC の証明書スナップインを起動し、証明書スナップインを追加します。
[ Certificates スナップイン ] ダイアログ ボックスで、[ Computer アカウント] を選択し、[次へ を選択。
コンピューターの選択 ウィンドウで、コンピューター(このコンソールが実行されているコンピューター)を選択し、Finishを選択します。
OKを選択して、[スナップインの追加と削除ダイアログ ボックスを閉じます。
MMC の左側のウィンドウで、 Certificates (ローカル コンピューター) ノードを展開します。
Trusted Root Certification Authorities ノードを展開し、Certificates サブフォルダーを右クリックし、[ タスクを選択し、 Importを選択します。
Certificate インポート ウィザードでWelcome ページで次へ選択。
[インポートするファイルページで、Browse を選択します。
caCert.cer証明書ファイルの場所を参照し、ファイルを選択し、開くを選択します。
File to Import ページで、Next を選択します。
Certificate ストア ページで、既定の選択をそのまま使用し、 Nextを選択します。
証明書のインポート ウィザードの完了 ページで、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 Configuration Manager を使用してサーバー側の暗号化を無効にします。 これを行う方法の詳細については、「 サーバーの構成」を参照してください。