Scaffold-DbContext を実行すると 「信頼されていない機関によって証明書チェーンが発行されました。」 エラーが発生する - Visual Studio

現象

Scaffold-DbContext コマンドを実行すると、次のエラーが発生します。
エラーメッセージ
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 信頼されていない機関によって証明書チェーンが発行されました。)

原因

データベースサーバーとの接続を暗号化した場合、デフォルトの設定では信頼されている証明機関の証明書が必要となりました。
補足
データベースに接続するプログラムで同様のエラーが発生する場合については こちらの記事を参照してください。 原因は同じです。

対処法

Microsoftからの解決策で、次の3つの解決策があります。(参照)
  • Microsoft OLE DB Driver for SQL Server 18.x を使用する
  • アプリケーション接続文字列プロパティで、[データの暗号化/暗号化の使用] 設定に [はい] または [必須] の値が既に指定されている場合は、値を [いいえ] または [省略可能] に変更する。または;Encrypt=Falseを接続文字列に追加する
  • ;Trust Server Certificate=true を接続文字列に追加する

Microsoft OLE DB Driver for SQL Server 18.x を使用する

バージョン18.xのMicrosoft OLE DB Driver for SQL Server をインストールして利用する方法です。 今回この記事では取り上げません。

[データの暗号化/暗号化の使用] 設定に値を [いいえ] または [省略可能] に変更する

接続文字列に、次の設定を追記します。
;Encrypt=False

文字列の書式は以下になります。
Data Source=(ホスト名またはIPアドレス);Initial Catalog=(接続データベース名);User ID=(ユーザーID);Password=(パスワード);Encrypt=False
具体例
Data Source=192.168.0.100;Initial Catalog=iPentecSandBox;User ID=penta;Password=hopstep;Encrypt=False

;Trust Server Certificate=true を接続文字列に追加する

接続文字列に、次の設定を追記します。
;Trust Server Certificate=true
文字列の書式は以下になります。
Data Source=(ホスト名またはIPアドレス);Initial Catalog=(接続データベース名);User ID=(ユーザーID);Password=(パスワード);Trust Server Certificate=true
具体例
Data Source=192.168.0.100;Initial Catalog=iPentecSandBox;User ID=penta;Password=hopstep;Trust Server Certificate=true
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2023-12-03
作成日: 2022-11-24
iPentec all rights reserverd.