c # - rsa private nøgle anerkendt som cng

Indlæg af Hanne Mølgaard Plasc

Problem



på en WS-federation ansøgning ved hjælp af system.identity.model, et CNG certifikat forårsager mig problemer.


Først og fremmest fik jeg denne fejl:



  Fejl: 'ID1039: Certifikatets private nøgle kunne ikke åbnes.
  Sørg for adgangskontrollisten (ACL) på certifikatets private nøgle
  giver adgang til ansøgningspoolbrugeren. [[...]] Ugyldig udbyder
  angivet type.



Jeg opdager at et cng certifikat ikke synes at være kompatibelt med system.identityModel.
Så fulgte jeg disse trin for at konvertere min cng private nøgle til RSA private nøgle.
Det nye certifikat fungerer perfekt på min computer (w10) eller endda en anden Windows server 2012.


Jeg lavede et lille program til at tjekke. Før konverteringen, HasCngKey er sand, returnerer GetCngPrivateKey 'System.Security.Cryptography.CngKey', og selvfølgelig kaster PrivateKey ugyldig udbyderstype undtagelse.

Efter konvertering er HasCngKey falsk, og jeg kan få den private nøgle med cert.PrivateKey. [2]


Men på klientens uat miljø, for det samme nye certifikat, er HasCngKey stadig sandt, men GetCngPrivateKey kaster 'System.Security.Cryptography.CryptographicException: Keyset eksisterer ikke'
og cert.PrivateKey kaster stadig ugyldig udleveret type, som om tasten stadig var cng.


Har nogen en ide om hvorfor det virker på en maskine, men ikke den gode?

Bedste reference