Certificat X509 ne chargeant pas de fichier de clé privée sur le serveur

J’utilise l’API Google Analytics et j’ai suivi cette question SO pour configurer OAuth: https://stackoverflow.com/a/13013265/1299363

Voici mon code OAuth:

public void SetupOAuth () { var Cert = new X509Certificate2( PrivateKeyPath, "notasecret", X509KeyStorageFlags.Exportable); var Provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, Cert) { ServiceAccountId = ServiceAccountUser, Scope = ApiUrl + "analytics.readonly" }; var Auth = new OAuth2Authenticator(Provider, AssertionFlowClient.GetState); Service = new AnalyticsService(Auth); } 

PrivateKeyPath est le chemin du fichier de clé privée fourni par Google API Console. Cela fonctionne parfaitement sur ma machine locale, mais quand je le pousse à notre serveur de test, je reçois

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

avec la trace de stack suivante (parties non pertinentes supprimées):

 System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) +33 System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromFile(Ssortingng fileName, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx) +0 System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(Ssortingng fileName, Object password, X509KeyStorageFlags keyStorageFlags) +237 System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Ssortingng fileName, Ssortingng password, X509KeyStorageFlags keyStorageFlags) +140 Mesortingcs.APIs.GoogleAnalytics.SetupOAuth() in \Mesortingcs\APIs\GoogleAnalytics.cs:36 Mesortingcs.APIs.GoogleAnalytics..ctor(Ssortingng PrivateKeyPath) in \Mesortingcs\APIs\GoogleAnalytics.cs:31 

Il semble donc que cela pose des problèmes lors du chargement du fichier. J’ai vérifié le PrivateKeyPath qui est passé et il pointe vers le bon emplacement.

Des idées? Je ne sais pas s’il s’agit d’un problème avec le serveur, le fichier, le code ou quoi.

Une des choses qui me vient à l’esprit est l’identité de votre pool d’applications, assurez-vous que le profil utilisateur Load est activé, sinon le sous-système crypto ne fonctionnera pas.