【发布时间】:2017-05-04 10:03:42
【问题描述】:
我创建了一个自签名证书 (pfx) 用于测试目的。
我可以通过以下方式导出 ist 公钥:
X509Certificate2 cer = new X509Certificate2();
X509Store store = new X509Store(StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var certificateCollection = store.Certificates.Find(...);
var cert = certificateCollection[0] ;
Console.WriteLine(Convert.ToBase64String(cert.Export( X509ContentType.Cert ), Base64FormattingOptions.InsertLineBreaks));
结果:
MIIDFTCCAf2gAw...........eFUpBB9C0/UNRmD7EAg==
这与openssl命令一致:
$ openssl pkcs12 -in domain.name.pfx -clcerts -nokeys -out domain.name.crt
结果:
-----BEGIN CERTIFICATE-----
MIIDFTCCAf2gAw........9C0/UNRmD7EAg==
-----END CERTIFICATE-----
但是,当我通过 C# 导出 private 密钥时:
Convert.ToBase64String(cert.Export( X509ContentType.Pfx ), Base64FormattingOptions.InsertLineBreaks)
我明白了:
MIIDFTCCAf2gAw............OVeFUpBB9C0/UNRmD7EAg==
使用openssl 命令时:
$ openssl pkcs12 -in domain.name.pfx -nocerts -nodes -out domain.name.key
我明白了:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w.........6HNjF2h7uuFdvbH2VAVg=
-----END PRIVATE KEY-----
问题:
为什么我在私钥中得到不同的结果?以及如何修复我的 C# 代码以产生与 openssl 的结果相同的结果?
(注意 - 我说的不是-----begin/end keys----- boundries,而是实际值。
附加信息,the PFX file
【问题讨论】:
-
当您跳过 openssl 参数“-nodes”并实际提供相同的加密密码时会发生什么?
-
@DarkSquirrel42 我收到一个错误i.stack.imgur.com/joj8y.png
-
ok...openssl 的密码最少为 4 个字符...您可以在错误消息中看到...
-
@DarkSquirrel42 我将尝试导出使用“1234”密码的自签名并更新问题。
-
@DarkSquirrel42 我还是得到了不同的结果。我已将 pfx 文件添加到问题中。
标签: c# ssl openssl cryptography certificate