以下是修改后的代码: ```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#中使用
遇到了一个问题,即在读取证书私钥时出现了错误。具体错误提示是指定了无效的提供程序类型。我将努力解决这个问题。(遇到了一个问题怎么办)(遇到了一个问题,然后领导说啥也不会)
163
0
版权声明:搭建盘口维护联系TG:@KT_code
还木有评论哦,快来抢沙发吧~