Forums Neueste Beiträge
 

X509Certificate2.HasPrivateKey = true, aber kein PrivateKey?

12/11/2008 - 14:45 von Dominik Amon | Report spam
hallo

Ich habe ein X509 Zertifikate, für welches ich sowohl Public- als auch
Privatekey besitze.
Ich habe eine einfache Konsolenapplikationen zwecks Test für das ganze
entwickelt, làuft unter meinen Rechten (Sprich Administrator)
Wenn ich im Programm X509Certificate auslese, und die Eigenschaft
"HasPrivateKey" auswerte, bescheinigt mir diese auch "true". Ich kann auch
den PublicKey auswerten.

Wenn ich aber jetzt auf PrivateKey Property zugreife erhalte ich nach langem
Warten "Keyset does not exist" bzw. "Der Schlüsselsatz ist nicht
vorhanden.".

Stacktrace dazu:
bei System.Security.Cryptography.Utils.CreateProvHandle(CspParameters
parameters, Boolean randomKeyContainer) bei
System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType
keyType, CspParameters parameters, Boolean randomKeyContainer, Int32
dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
bei System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()
bei System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32
dwKeySize, CspParameters parameters, Boolean useDefaultKeySize) bei
System.Security.Cryptography.RSACryptoServiceProvider..ctor(CspParameters
parameters) bei
System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()
bei SecurityHelper.SignatureHelper.FindCertificate(CertificateIdentification
certIdentification, String certAttributeData) in D:\\DATEN\\AmonD\\Visual
Studio
2005\\Projects\\ConsoleApplication1\\ConsoleApplication1\\SignatureHelper.cs:Zeile
120.

Ich hab' leider keine Ahnung, was die Ursache dafür ist :-(

Vielen Dank für eure Hilfe,
Dominik
 

Lesen sie die antworten

#1 Dominik Amon
13/11/2008 - 12:04 | Warnen spam
hallo

ich hab mittlerweile rausgefunden, dass es scheinbar ein Berechtiungsproblem
ist.
Wenn ich das Zertifikat in den CurrentUser Store einspiele mit PrivateKey,
ist es kein Problem an den Private Key zu gelangen.

Ist das Zertifikat auf dem LocalMachine Store abgespeichert, komme ich damit
nicht ran.
Ich habe gestern bereits versucht mit dem WinHttpCertCfg [1] entsprechend
die Rechte auf den Private Key freizugeben. Erfolglos :-(

Ich habe dann sogar "Jeder" Vollzugriff gegeben: Haut nicht hin! Was hats
da?

Wenn ich den Testcode als Webapplikation auf einem unserer Server deploye,
kann ich (nach Freischaltung) sehr wohl auf den Private Key des Zertifikats
innerhalb der LOCAL_MACHINE zugreifen???

Vielen Dank für Hilfe,
Dominik

[1]
http://www.microsoft.com/downloads/...x?familyidÄ2e27ac-3409-40e9-8667-c748e422833f&displaylang=en

"Dominik Amon" schrieb im Newsbeitrag
news:
hallo

Ich habe ein X509 Zertifikate, für welches ich sowohl Public- als auch
Privatekey besitze.
Ich habe eine einfache Konsolenapplikationen zwecks Test für das ganze
entwickelt, làuft unter meinen Rechten (Sprich Administrator)
Wenn ich im Programm X509Certificate auslese, und die Eigenschaft
"HasPrivateKey" auswerte, bescheinigt mir diese auch "true". Ich kann auch
den PublicKey auswerten.

Wenn ich aber jetzt auf PrivateKey Property zugreife erhalte ich nach
langem Warten "Keyset does not exist" bzw. "Der Schlüsselsatz ist nicht
vorhanden.".

Stacktrace dazu:
bei System.Security.Cryptography.Utils.CreateProvHandle(CspParameters
parameters, Boolean randomKeyContainer) bei
System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType
keyType, CspParameters parameters, Boolean randomKeyContainer, Int32
dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle&
safeKeyHandle) bei
System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair() bei
System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32
dwKeySize, CspParameters parameters, Boolean useDefaultKeySize) bei
System.Security.Cryptography.RSACryptoServiceProvider..ctor(CspParameters
parameters) bei
System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()
bei
SecurityHelper.SignatureHelper.FindCertificate(CertificateIdentification
certIdentification, String certAttributeData) in D:\\DATEN\\AmonD\\Visual
Studio
2005\\Projects\\ConsoleApplication1\\ConsoleApplication1\\SignatureHelper.cs:Zeile
120.

Ich hab' leider keine Ahnung, was die Ursache dafür ist :-(

Vielen Dank für eure Hilfe,
Dominik

Ähnliche fragen