実現したいこと
sqlserver接続時の証明書エラーを解決したい
発生している問題・分からないこと
ローカルのsqlserverに接続しようとした際に証明書エラーがでます。
MVCで試したときは、
Trusted_Connection=True;
をDB接続文字列の末尾にくっつけることで出なくなりましたが、Reactテンプレートで今回試したところ、上記の文字列をDB接続文字列の末尾にくっつけてもこのエラーが出続けています。
ちなみにSSMSをつかってsqlserverには接続できていました。
エラーメッセージ
error
1Microsoft.Data.SqlClient.SqlException: 'A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 信頼されていない機関によって証明書チェーンが発行されました。)'
該当のソースコード
C#
1"自分のプロジェクト名DBConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet-53bc9b9d-9d6a-45d4-8429-...;Trusted_Connection=True;TrustServerCertificate=True"
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
TrustServerCertificate=TrueまたはEncrypt=Falseを接続文字列の末尾にくっつけたりしてみたが変わらなかった
補足
reactテンプレート
react18.2
.net6
EntityFramework Coreを使っていると思いますが、これはご自身でnugetから導入していますか?
EF Coreのバージョンはいくつでしょうか?
EFCoreバージョン7で確かこのあたりの挙動変更が破壊的変更として書かれていたと思います。
Reactテンプレートでも生成されるASP.NETはMVC(API)なので、MVCで出来ていたのであればバージョン合わせればいけそうな気はします。
EFCore7のドキュメントを確認したところ正しくは「Microsoft.Data.SqlClient」の破壊的変更でした。
https://learn.microsoft.com/ja-jp/ef/core/what-is-new/ef-core-7.0/breaking-changes?tabs=v7#encrypt-defaults-to-true-for-sql-server-connections
書かれている対処(TrustServerCertificate)は正しいと思うのでバージョン以外に原因が思いつかないですね。
あとは接続文字列がDevelopとProductionで別で片方しか変えてない(実は違う接続文字列だった)、とかぐらいでしょうか。
EF Coreはnugetから導入しましてバージョンが7.0.7でした。
ASP.NETはMVCのほうでも試したところ、同じエラーになっておりました。
MVCのほうではとくにソースや設定など変更していなかったので、reactテンプレート導入した時に何か起こったのか、または別の原因なのかよくわからない状況です。。
ちなみにvisual studioのsqlserverオブジェクトエクスプローラーからもテーブルのデータなど見ることができます
「SQLServerオブジェクトエクスプローラー」で接続できているなら「aspnet-53bc9b9d-9...」のプロパティを開き、接続文字列が確認できると思います。
書き方は少し違う(Server=ではなくData Source=になっている等)と思いますが意味は同じなので参考にするとよいかもしれません。
回答1件
あなたの回答
tips
プレビュー