在让 ManagedOpenSsl 与 .Net Core 一起工作时,我一直面临着多重挑战。我从 nuget 包下载了 ManagedOpenSsl.NetCore。
我的最终目标是从证书 PEM 和私钥创建一个 .pfx 文件。在下面的代码中,ocert.KeyPair.PrivateKey
是证书私钥,ocert.CertificatePem
是证书 PEM。
ManagedOpenSsl.NetCore.Core.BIO key_bio = new ManagedOpenSsl.NetCore.Core.BIO(ocert.KeyPair.PrivateKey);
ManagedOpenSsl.NetCore.Core.BIO cert_bio = new ManagedOpenSsl.NetCore.Core.BIO(ocert.CertificatePem);
ManagedOpenSsl.NetCore.Crypto.CryptoKey key = ManagedOpenSsl.NetCore.Crypto.CryptoKey.FromPrivateKey(ocert.KeyPair.PrivateKey, "xxxxx");
ManagedOpenSsl.NetCore.X509.X509Certificate cert = new ManagedOpenSsl.NetCore.X509.X509Certificate(cert_bio);
ManagedOpenSsl.NetCore.Core.Stack<ManagedOpenSsl.NetCore.X509.X509Certificate> hmm = new ManagedOpenSsl.NetCore.Core.Stack<ManagedOpenSsl.NetCore.X509.X509Certificate>();
var pfx = new ManagedOpenSsl.NetCore.X509.PKCS12(password, key, cert, hmm); // <--
ManagedOpenSsl.NetCore.X509.X509Certificate certpfx = pfx.Certificate;
我收到错误
{System.TypeInitializationException:“ManagedOpenSsl.NetCore.Core.Native”的类型初始化程序引发了异常。---> System.BadImageFormatException:尝试加载格式不正确的程序。(HRESULT 的异常:0x8007000B)在 ManagedOpenSsl.NetCore.Core.Version.get_Library() 的 ManagedOpenSsl.NetCore.Core.Native..cctor() 的 ManagedOpenSsl.NetCore.Core.Native.SSLeay() --- 内部结束异常堆栈跟踪 - 在代码行中 `ManagedOpenSsl.NetCore.Core.BIO key_bio = new ManagedOpenSsl.NetCore.Core.BIO(ocert.KeyPair.PrivateKey);
在 Visual Studio 2017 项目属性中,我已将平台目标设置为“任何 CPU”,但问题仍然存在。还有关于如何以pfx.Certificate
.pfx 格式保存到特定文件夹的任何实现?任何帮助将不胜感激。一段时间以来一直在努力解决这个问题。