Always Encrypted を使用する SQL Server 2016 データベースがあります。最近公開された ASP.net Web サイトは、このデータベースからデータを取得しようとしましたが、取得すると次のエラーが発生します。
Error: Failed to decrypt column 'EnSSd'. Failed to decrypt a column encryption key using key store provider: 'MSSQL_CERTIFICATE_STORE'. The last 10 bytes of the encrypted column encryption key are: 'B8-48-B3-62-90-0B-1D-A6-7D-80'. Certificate with thumbprint '97B0D3A64CADBE86FE23559AEE2783317655FD0F' not found in certificate store 'My' in certificate location 'CurrentUser'. Verify the certificate path in the column master key definition in the database is correct, and the certificate has been imported correctly into the certificate location/store. Parameter name: masterKeyPath
これは、証明書がサーバー上の適切な場所に配置されていないことを意味することがわかりました。開発中は、個人証明書ストアの下の証明書スナップインに証明書を配置するだけでうまくいきましたが、サイトが公開されたので、Web サーバーで同じことを試みましたが、うまくいきませんでした (私たちはそれを理解しました)。しません)。
サイトで匿名認証が有効になっており、匿名ユーザー ID は IUSR です。ASP.NET の偽装は無効になっています。
証明書を入れる適切な場所はどこですか?
更新 - アプリケーション プール ID アカウントを証明書を作成したアカウントに変更することで機能するようになりました。また、証明書を Web サーバーの Current User-Personal リストに追加するときに使用されたアカウントでもありました。このアカウントは使用したくないので、証明書をどこに置くのが適切ですか?