AzureのWebサイトからVMロールのDBに接続すると、「証明書チェーンは信頼されていない機関によって発行されました」


191

Azure WebサイトからVMロール(SQL VMロールがある)にあるMY DBに接続するとエラーが発生します。VMロールとAzure WebサイトはどちらもWestゾーンにあります。私は次の問題に直面しています:

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

SSMSを使用してDBに接続できます。VMの役割で1433ポートが開いています。接続の何が問題になっていますか?

回答:


367

SQL VMの信頼されたルートストアにCA署名付き証明書がインストールされていない可能性があります。

Encrypt=True接続文字列に含まれている場合は、それをオフに設定するか(推奨されません)、または接続文字列に次を追加します。

TrustServerCertificate=True

SQL Serverは、使用する証明書をインストールしていない場合は自己署名証明書を作成しますが、接続文字列にサーバー証明書を信頼するように指示しない限り、CA署名されていないため、呼び出し元は信頼しません。デフォルト。

長期的には、Let's Encryptを利用して、既知の信頼されたCAからCA署名付き証明書を無料で取得し、VMにインストールすることをお勧めします。自動更新するように設定することを忘れないでください。このトピックの詳細については、SQL Serverのオンラインブックの「暗号化階層」および「検証なしでの暗号化の使用」のトピックを参照してください。


1
すみません、TTrusted_Connection =接続文字列にFalseが設定されていました。それをtrueに設定することは私にとってはうまくいきます。ありがとうとにかく
ZafarYousafi

1
@ZafarYousafiあなたはこの答えを正しいものとしてマークする必要があります。
Termato 2014

5
これは、アドバイスの設定によくないTrustServerCertificatetrue-この無効証明書のチェック。それは単にに設定Encryptすることと同じfalseです!
マットトーマス

5
この回答で「TrustServerCertificate = True」を指定すると、問題が解決する可能性がありますが、ひどいアドバイスです。症状ではなく原因を修正してください。CA署名付き証明書のインストールを提案する回答の他の部分は、進むべき道です。
ミッチウィート

SSMSの新しいバージョンでは、[接続プロパティ]タブに[信頼サーバー証明書]という小さなオプションがあります。この男の子をチェックすると、上記のコマンドと同じ効果があります。
2018

87

SQL Management Studioを使用している場合は、接続プロパティに移動し、[Trust server certificateed]をクリックしてください SQL Management Studioを使用している場合は、接続プロパティに移動し、[Trust server certificateed]をクリックしてください


18
それ自体は悪いアドバイスではありません。開発サーバーに接続してコーディングなどの作業を行う必要がある場合に使用できます。ソフトウェア開発者として、私は物事を迅速に修正する時間のないDevOpsと常に苦労しており、期限までに貴重な時間を浪費する余裕はありません。このオプションをオフにするデータ漏洩の計量は、環境がローカルかリモートか、管理者による設定、IP制限、その他の回避策で簡単に軽減できる多くの環境に依存します。インフラストラクチャに関する情報が少なければ、それが悪いアドバイスだとは言えません。
OrizG 2018

あなたは私の日を救った。ありがとう@ ct.tan
Milinda Wickramasinghe

@OrizGローカルマシンにSQL Serverをインストールし、個人的なプロジェクトに使用しています。現時点では、1ペニーは使いたくないので、無料のホストを取得し、証明書にCa署名するようにサーバーを構成し、サーバーとクライアント間でそれらを交換しました。にアクセスするために使用します。しかし、無料のホストのため、Let's Encryptでそれを行うことができませんでした。信頼できるCA署名付き証明書を使用して証明書を適切に交換する場合と比較して、このソリューションの欠点は正確には何ですか?
ccoutinho

31

SSMSを使用して接続しようとしたときにこのエラーメッセージが表示された場合TrustServerCertificate=Trueは、追加の接続パラメーターに追加してください。


23
ミッチ、あなたはこの質問への3つの答えにこれと同じコメントをしました。これが「本当に、本当に悪いアドバイス」である理由に関して、いくつかの実質的な情報またはリンクを提供した場合、それは他の読者に役立つかもしれません。
靴なし

@Shoeless承認された回答に関するいくつかのコメントで説明されています。
トムブロジェット2018

4

Visual Studio 2015のデータ接続を介してアクセスしようとしていて、上記のエラーTrustServerCertificate=True が発生した場合は、[ 詳細設定] に移動してエラーを設定 してください。


9
それ自体は悪いアドバイスではありません。開発サーバーに接続してコーディングなどの作業を行う必要がある場合に使用できます。ソフトウェア開発者として、私は常に物事を迅速に修正する時間がないDevOpsと格闘しており、期限までに貴重な時間を浪費する余裕はありません。このオプションをオフにするデータ漏洩の計量は、環境がローカルかリモートか、管理者による設定、IP制限、その他の回避策で簡単に軽減できる多くの環境に依存します。インフラストラクチャについて少しの情報がなければ、それは悪いアドバイスだとは言えません。
OrizG 2018

1

IISからSQLServerにアクセスしているときに同じ問題に見舞われました。TrustServerCertificate = Trueを追加しても効果がありませんでした。

MS docsでコメントを見ることができます:SQLServerサービスアカウントが、使用しているTLS証明書にアクセスできることを確認してください。(NTサービス\ MSSQLSERVER)

個人用ストアを開き、証明書を右クリックします->秘密キーを管理します-> SQLサービスアカウントを追加してフルコントロールを与えます。

SQLサービスを再起動します。出来た。


0

ssmsクライアント自体からも同じことができます。ssmsを開き、サーバー名を挿入してから、見出しの接続プロパティの下のオプションから、[サーバー証明書を信頼する]がオンになっていることを確認します。


0

ExcelデータをSSMS経由でSQLDatabaseにインポートしているときにこの問題が発生しました。解決策はTrustServerCertificate = True、セキュリティセクションで設定することです


0

Trust Server証明書がチェックさTrustServerCertificate=Trueれていて、Advancedセクションに追加したにもかかわらず、プロファイラーを実行しようとしてこのエラーに遭遇しました。管理者として実行しているSSMSのインスタンスに変更したところ、プロファイラーは問題なく起動しました。(私は以前、ローカルへの接続でさえ接続に長い時間がかかるとき、管理者の助けを借りて実行していることを発見していました)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.