1. ホーム
  2. c#

[解決済み] X509Certificate コンストラクタの例外

2023-07-09 01:47:34

質問

//cert is an EF Entity and 
//    cert.CertificatePKCS12 is a byte[] with the certificate.

var certificate = new X509Certificate(cert.CertificatePKCS12, "SomePassword");

データベースから証明書をロードするとき、ステージング サーバー (Windows 2008 R2/IIS7.5) では、この例外が発生します。

System.Security.Cryptography.CryptographicException: An internal error occurred.

   at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
   at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
   at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)

注意 この問題は、ローカル (Windows 7/Casini) では発生しません。

どんな洞察でも大いに結構です。

どのように解決するのですか?

IIS アプリケーションプールの設定 (アプリケーションプール > 詳細設定) に、アプリケーションプールの ID ユーザーのユーザープロファイルを読み込むための設定があることが判明しました。false に設定すると、キー コンテナーにアクセスできなくなります。

そのため、単に Load User Profile というオプションを True