EntityFramework Core 7.0 を使ったときにサーバー証明書エラーが発生する場合の対処

.NET 6 で利用していた EF Core 6.0 を .NET 7 の EF Core 7.0 にアップデートしたときに「信頼されていない機関によって証明書チェーンが発行されました」のエラーが出てきて SQL Server に接続できないことがあります。これは、開発用に立てたローカルの SQL Server に接続するときに、サーバーの証明書が正しくない(自己証明書を含む)ときに発生するようです。正しくは SQL Server が動いているサーバー証明書をローカルPCにインストールするか、正しいサーバー証明書をいれればいいのですが、本運用ならともかくとして、開発用サーバーに正式な証明書をいれることはありません。

EF Core 6.0 ではサーバー証明書を無視するらしいのですが、EF Core 7.0 できっちりとチェックするようになったための問題のようです。

開発中の場合は、サーバーにある自己証明書(開発機で動いていれば自分自身のPC)をスルーするようにします。

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    base.OnConfiguring(optionsBuilder);
    if (optionsBuilder.IsConfigured == false )
    {
        var builder = new SqlConnectionStringBuilder();
        builder.DataSource = "(local)";
        builder.InitialCatalog = "mvcdb";
        builder.IntegratedSecurity = true;
        builder.TrustServerCertificate= true; // サーバー証明書を常に信頼する
        optionsBuilder.UseSqlServer(builder.ConnectionString);
    }
}

DbContext クラスで、TrustServerCertificate の値を true にしておくと接続できるようになります。

config の場合は「TrustServerCertificate=Yes」を追加しておきます。

参考先

ssl – Entity Framework Core 7 connection certificate trust exception – Stack Overflow https://stackoverflow.com/questions/74467642/entity-framework-core-7-connection-certificate-trust-exception

カテゴリー: 開発 パーマリンク