【发布时间】:2017-10-30 23:19:00
【问题描述】:
我想用RSA.SignHash() 签署一些数据。
我在 Linux OpenSSL 中通过以下命令创建了一个 RSA 私钥文件。
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-----
【问题讨论】:
-
问题出在 pem 格式,请参阅:how to get private key from PEM file?
-
亲爱的@AlexK。还有 Simone Cifani,我已经尝试过另一篇文章 (stackoverflow.com/questions/7400500/…)。同样的例外。我没有任何证书。我有一个私钥。
-
只是简单地说:密钥不是证书。尝试将私钥加载到证书对象中是没有意义的。
-
亲爱的@jww,请指导我如何仅使用私钥进行签名。
标签: c# openssl rsa x509certificate2