遇到了一个问题,即在读取证书私钥时出现了错误。具体错误提示是指定了无效的提供程序类型。我将努力解决这个问题。(遇到了一个问题怎么办)(遇到了一个问题,然后领导说啥也不会)

访客 112 0
以下是修改后的代码:

```csharp
try
{
    X509Certificate2 cert = new X509Certificate2(ServiceLicense.pfx, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
    Console.WriteLine(Has Private Key:  + cert.HasPrivateKey.ToString());
    Console.WriteLine(Private Key Size:  + cert.PrivateKey.KeySize.ToString());
    Console.WriteLine(Private Key XML:  + cert.PrivateKey.ToXmlString(true));
}
catch (Exception e)
{
    Console.WriteLine(Error Message:  + e.Message);
}
```

这是一个简单的程序,用于加载一个名为ServiceLicense.pfx的证书文件,并输出相关信息。如果加载过程中出现异常,将打印错误消息。 

在浏览了无数网页和论坛后,我徒劳地浪费了整个晚上的时间,却没有找到任何能解决问题的有效建议。令人失望的是,没有一个人提出切实可行的点子。

最终,唯有依靠个人自身和排除法来解决问题。

如果确认上述代码没有任何问题,并且排除了环境因素后,若问题仍然存在,请尝试使用我的方法。

具体细节不再赘述,问题出现在我的证书上。

经过全面测试和软件签名验证的makecert自签自发证书文件,在各种系统和软件中都能够正常使用,然而在程序中却无法读取PrivateKey的问题一直存在。

还好证书比较多 换USBKEY的没问题  换软证书也没问题 

然而,我们不能简单地忽略这一点。所开发的是一个内网加密系统,因此每台机器都必须拥有一个独立的证书。

因此,证书必须由主机进行签发。

当使用openssl对pfx文件进行反向操作并尝试重新合成pfx文件时,遇到了问题。

pkcs12: 在"License_open.cer" 中发现未识别的标志。
pkcs12: 请使用 -help 获取摘要信息。
pkcs12 中出现错误。

通过使用openssl进行证书签发并测试程序的正常运行,我们最终找到了解决方案。

正常情况下,使用Windows服务器进行颁发是合理的。

没有明确的问题寻找原因。

但是大致了解为  证书的加密算法或者编码问题

无论加密方法或程序语言如何不同,一个证书文件仍然有效。

只要拥有私钥,就可以使用其他生成器将其自由转换为不同格式的文件,然后再转回pfx文件。最终的结果应该是这样。

无论是由其他程序生成的证书,还是 X509Certificate 或 X509Certificate2,都可以通过。

而 makecert 仅支持 sha1 和 md5 算法,

最终,尽管使用了不同的程序生成相同的私钥和公钥,通过makecert生成的证书文件与其他证书相比存在3个字节的差异。然而,这并不影响该证书的有效性。

只是无法赞同在C#中使用

 

 

 

 

标签: 证书 问题 文件

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~