J'ai été confronté au problème suivant.
J'exécute le code suivant
var binaryData = File.ReadAllBytes(pathToPfxFile);
var cert = new X509Certificate2(binaryData, password);
en deux processus. L'un des processus fonctionne sous LOCAL_SYSTEM
et là, ce code réussit. Un autre code s'exécute dans IIS sous un compte d'utilisateur local appartenant au groupe local "Users" et là j'obtiens l'exception suivante :
System.Security.Cryptography.CryptographicException
Object was not found.
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)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password)
//my code here
Alors j'ai fait un peu de recherche sur Google et j'ai trouvé cette réponse à une question similaire. J'ai essayé d'activer LoadUserProfile
pour le pool d'applications et cela fonctionne maintenant.
Le problème est que je ne comprends pas ce qui se passe exactement lorsque je mets LoadUserProfile
et les conséquences que cela pourrait avoir. Je veux dire que si c'est une "bonne" chose, pourquoi n'est-elle pas activée par défaut et pourquoi est-elle là après tout ?
Que se passe-t-il exactement quand je mets LoadUserProfile
dans le pool IIS et quelles conséquences négatives cela peut-il avoir ?