.net核心中的ManagedOpenSsl抛出" System.BadImageFormatException:"

时间:2018-02-18 06:32:43

标签: c# .net-core openssl-net

我一直面临着让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:类型初始值设定项   &#39; ManagedOpenSsl.NetCore.Core.Native&#39;抛出一个例外。 ---&GT;   System.BadImageFormatException:尝试加载程序   格式不正确。 (来自HRESULT的异常:0x8007000B)at   ManagedOpenSsl.NetCore.Core.Native.SSLeay()at   ManagedOpenSsl.NetCore.Core.Version.get_Library()at   ManagedOpenSsl.NetCore.Core.Native..cctor()---内部结束   异常堆栈跟踪 - 在代码行中   `ManagedOpenSsl.NetCore.Core.BIO key_bio = new   ManagedOpenSsl.NetCore.Core.BIO(ocert.KeyPair.PrivateKey);

在Visual Studio 2017项目属性中,我已将平台目标设置为&#34;任何CPU&#34;,仍然会出现问题。还有关于如何将pfx.Certificate保存为.pfx格式的特定文件夹的任何实现?任何帮助将不胜感激。一段时间以来一直在努力解决这个问题。

1 个答案:

答案 0 :(得分:1)

由于这是非托管代码,因此您需要具体了解位数。不要以“任何CPU”为目标。编译项目以获得目标程序的位数。如果要在x86和x64进程上使用它,请编译为2个不同的二进制文件。