我一直在試圖弄清楚這幾天。我已經放棄了。我正嘗試從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,所以對我來說很容易。 :-)