2017-05-30 114 views
0

我想与RSA.SignHash()签署一些数据。 我在Linux OpenSSL中通过以下命令创建了一个RSA私钥文件。无法加载从RSA私钥文件的私钥在C#

openssl genrsa -out private_key.pem 1024 

但是,当我想要加载通过X509Certificate2对象此键,得到“无法找到请求的对象。”例外。 这里是我的代码:

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

我用Chilkat库,一切工作正常,但不Microsoft有任何步行,虽然接近它没有任何第三方工具? 这里是我的PEM文件内容:

-----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

其对PEM格式这是问题,请参见:如何从PEM私钥文件?(https://stackoverflow.com/questions/7400500/how-to-get-private-key-from- pem-file) –

+0

尊敬的@AlexK。和西蒙妮Cifani,我试过其他文章(https://stackoverflow.com/questions/7400500/how-to-get-private-key-from-pem-file)。同样的例外。我没有任何证书。我有一个私钥。 –

+0

只是说明显而易见:一把钥匙不是证书。尝试将私钥加载到证书对象是没有意义的。 – jww

回答

1

没有,就没有友好的方式来做到这一点无需第三方工具。如果你只有私钥然后恕我直言new X509Certificate2(keyFilePath)没有意义。

你可以做的是实现(或使用一个库)来解析私钥。然后将解析的私钥参数编码为可以使用RSA.FromXmlString导入的xml结构。