2017-05-30 4 views
0

laden Ich möchte einige Daten mit RSA.SignHash() signieren. Ich habe eine private RSA-Schlüsseldatei über den folgenden Befehl in Linux OpenSSL erstellt.Kann nicht privaten Schlüssel aus einer RSA PRIVATE KEY-Datei in C#

openssl genrsa -out private_key.pem 1024 

Aber wenn ich diesen Schlüssel von einem Objekt von X509Certificate2 laden möchten, erhalten die „Kann nicht das gewünschte Objekt finden.“ Ausnahme. Hier ist mein Code:

string keyFilePath = @"C:\Keys\private_key.pem"; 
X509Certificate2 cert = new X509Certificate2(keyFilePath); 

ich die Chilkat Bibliothek verwendet habe, und alles funktioniert gut, aber Microsoft hat keine begehbaren obwohl es ohne Werkzeuge von Drittanbietern zu nähern? Hier ist mein pem Dateiinhalt:

-----BEGIN RSA PRIVATE KEY----- 
MIICXQIBAAKBgQC23ivEPgSqxCcSTNUY8IbjCO0+0FwarI/azCHp97cWCBaosFAe 
mN9eI7u3agv2tCk+QrKrFDlkYWskFiADm55NMvDE1fuyy7db84MMh+GFcyemYZ0o 
yG5oBYPw7aNY7N7fBO5pbF9M/v4TMjKoxYGxk2kl58KT9cmvVH7TaF8xkwIDAQAB 
AoGAfVzRpDbf/DF8l48Uh4Rc9EeqXOV6Ps8Nz3EhzsODQBdLcVltk4w5lM/qYFLS 
4M2heI1A7wduUOJ4EMUaLV8BpcFkA2kSPah48R/1EGAMOpaD09j8qHJLCHJ2uiSc 
Hqi6z/6GhpSLzU5XR1lj0UIPy9aC9X0yPAao0WZ+5YgTdAECQQDoCwCmFD5r00Y0 
DcQGbAU/eekHJwNk48ACvIDquK/ysqA8aXvWgyXd3oa82fUSvSAMDGNFYr9xOxqF 
Vnnsi6VXAkEAyb9yymbehjwwl33CjPcsIRbjetLDwPgWhVYii4q7jELlefyC8mHL 
cpn0ejS4ln/uTUuNZCdYNHvYjQ8eXfaUJQJADfM7YsCs0AavncmGE2zDFAHcRJXP 
2mzmykNS7MmVql2azIb67vaLfD84knn4Bdxg5NiJz04UfFY1TfbY9aOfmQJBAJGX 
jsCQMiBPSYXZ5M+UBI2wleNqPIiCwMXinjVzndsf37kDyIAgoRCIGA0lBNzfX9r6 
HgRb/GSLx4Asm+6VZt0CQQC2DwtG+CKDyqEvhIGqlrAuQivMLJExZZV3kjsFSWOA 
CZFSr8JsSghb3bbxYexkzbWfalESYRkqu+zNWDPs9gpt 
-----END RSA PRIVATE KEY----- 
+0

Es ist das Pem-Format, das das Problem ist, siehe: [Wie erhalten Sie einen privaten Schlüssel aus PEM-Datei?] (Https://stackoverflow.com/questions/7400500/how-to-get-private-key-from- PEM-Datei) –

+0

Sehr geehrte @AlexK. und Simone Cifani, ich habe den anderen Artikel ausprobiert (https://stackoverflow.com/questions/7400500/how-to-get-private-key-from-pem-file). Und dieselbe Ausnahme. Ich habe kein Zertifikat. Ich habe einen privaten Schlüssel. –

+0

Nur das Offensichtliche: Ein Schlüssel ist kein Zertifikat. Es ist nicht sinnvoll, einen privaten Schlüssel in ein Zertifikatobjekt zu laden. – jww

Antwort

1

Nein, es gibt keine freundliche Art und Weise, ohne Drittanbieter-Tools zu tun. Wenn Sie nur einen privaten Schlüssel haben, macht IMHO new X509Certificate2(keyFilePath) keinen Sinn.

Was Sie tun könnten, ist implementieren (oder verwenden Sie eine Bibliothek), um den privaten Schlüssel zu analysieren. Codieren Sie dann die analysierten Parameter für den privaten Schlüssel in eine XML-Struktur, die mit RSA.FromXmlString importiert werden kann.

Verwandte Themen