私は何日もこれを理解しようとしてきました。私は断念しました。CA の証明書と秘密鍵の PEM ファイルから pfx を作成しようとしています。証明書とキーを作成できましたが、OpenSSL.X509.PKCS12 の最後のパラメーターがわかりません。ここに私が持っているものがあります:
private void btnCreatePFX_Click(object sender, EventArgs e)
{
string password = "p@ssw0rd";
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)
}
4 番目のパラメーターが OpenSSL.Core.Stack<OpenSSL.X509.X509Certificate> である必要があることはわかっていますが、設定方法がわかりません。ソース コードからのテストは、pfx を読み取り、同じ pfx オブジェクトのプロパティを使用して新しいオブジェクトを作成します。そのため、OpenSSL.Core.Stack<OpenSSL.X509.X509Certificate> を返すアクセサ OpenSSL.X509.PKCS12.CACertificates を簡単に取得できます。また、単純に pfx を読み取ると、CACertificates が空白で、Count と IsReadOnly の 2 つのメンバーがあることがわかります。そのオブジェクトを作成しようとすると、読み取り専用であるため、Count と IsReadOnly を設定できません。4 番目のパラメーターを null と "" に設定しても機能しません。私は困惑しています。
例はこちら: https://github.com/flaub/openssl-net/tree/master/test
どんな助けでも大歓迎です。私はプログラミングに関しては非常に初心者なので、お手柔らかにお願いします。:-)