gpt4 book ai didi

c# - 从字符串创建 X509Certificate2 时出现“找不到请求的对象”异常

转载 作者:太空狗 更新时间:2023-10-29 17:57:55 25 4
gpt4 key购买 nike

我正在尝试从字符串创建 X509Certificate2。让我举个例子:

string keyBase64String = Convert.ToBase64String(file.PKCS7);
var cert = new X509Certificate2(Convert.FromBase64String(keyBase64String));

keyBase64String有这样的内容:"MIIF0QYJKoZI .......hvcNAQcCoIIFwjCCBb4CA0="

file.PKCS7我从数据库下载的字节数组

创建 X509Certificate2 时出现以下异常:

Cannot find the requested object

和堆栈跟踪:

"Cannot find requested object" X509Certificate2 Exception "Cannot find requested object"} at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) at System.Security.Cryptography.X509Certificates.X509Utils._QueryCertBlobType(Byte[] rawData) at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData) at WebApp.SoupController.d__7.MoveNext() in D:\Projects\WebApp\Controllers\SoupController.cs:line 118

请告诉我我做错了什么。任何帮助将不胜感激!

最佳答案

如果 file.PKCS7 表示 PKCS#7 SignedData blob(从 X509Certificate2.Export(X509ContentType.Pkcs7)X509Certificate2Collection.Export(X509ContentType .Pkcs7)) 那么有两种不同的打开方式:

  • new X509Certificate2(byte[])/new X509Certificate2(string)
    • 单个证书构造函数将提取 SignedData blob 的签名证书。如果这只是作为证书集合导出,但没有签署任何东西,则没有这样的证书,因此失败并显示 Cannot find the original signer.(Win 2012r2,其他版本可以映射它到不同的字符串)
  • X509Certificate2Collection::Import(byte[])/X509Certificate2Collection::Import(字符串)
    • 集合导入将消耗所有“额外”证书,忽略签名证书。

因此,如果它真的是 PKCS#7,您可能需要集合导入(实例)方法。如果不是,则您有一些奇怪的变量/字段/属性名称。

关于c# - 从字符串创建 X509Certificate2 时出现“找不到请求的对象”异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44053426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com