我一直在试图弄清楚这几天。我已经放弃了。我正尝试从CA的证书和私钥PEM文件创建一个pfx。我能够创建证书和密钥,但现在我无法找出OpenSSL.X509.PKCS12中的最后一个参数。下面是我有:OpenSSL.NET创建PFX
private void btnCreatePFX_Click(object sender, EventArgs e)
{
string password = "[email protected]";
string key_path = @"certs\ca_key.key";
string cert_path = @"certs\ca_cert.crt";
string k = File.ReadAllText(key_path);
string c = File.ReadAllText(cert_path);
OpenSSL.Core.BIO key_bio = new OpenSSL.Core.BIO(k);
OpenSSL.Core.BIO cert_bio = new OpenSSL.Core.BIO(c);
OpenSSL.Crypto.CryptoKey key = OpenSSL.Crypto.CryptoKey.FromPrivateKey(k, "");
OpenSSL.X509.X509Certificate cert = new OpenSSL.X509.X509Certificate(cert_bio);
//OpenSSL.Core.Stack<OpenSSL.X509.X509Certificate> hmm = new OpenSSL.Core.Stack<OpenSSL.X509.X509Certificate>();
var pfx = new OpenSSL.X509.PKCS12(password, key, cert, null); // <-- Problem with 4th parameter (I think)
}
我知道第四个参数必须OpenSSL.Core.Stack <OpenSSL.X509.X509Certificate>但我无法弄清楚如何设置它。源代码的测试读取一个pfx,然后使用同一个pfx对象的属性来创建新的。所以,他们很容易得到访问者OpenSSL.X509.PKCS12.CACertificates,它返回一个OpenSSL.Core.Stack < OpenSSL.X509.X509证书>。另外,当简单阅读一个pfx时,我发现CACertificates是空白的,并且有两个成员Count和IsReadOnly。当我尝试创建该对象时,我不允许设置Count和IsReadOnly,因为它们是只读的。将第四个参数设置为null并且“”也不起作用!我很难过。
的例子在这里:https://github.com/flaub/openssl-net/tree/master/test
任何帮助是极大的赞赏。当谈到编程时,我是一个极端的noob,所以对我来说很容易。 :-)