C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 文件夹体积很大


现象:大量调用.p12证书时,C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 文件夹变得越来越大。

调用代码:

X509Certificate2 x509 = new X509Certificate2(p12FullName, hfMchId, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

根据观察,这种实例化(X509Certificate2)调用的方式会使用MachineKeys 文件夹,不停的产生新文件。

 

有限的解决办法:

如果你只是用到p12证书的私钥或序列号,那么直接将私钥或序列号读取出来,存入变量、配置文件或数据库中。下次调用,直接使用提取好的私钥或序列号。

提取私钥:

X509Certificate2 x509 = new X509Certificate2(qdInfo.p12FullName, qdInfo.mchId, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
            string xmlPrivateKey = x509.PrivateKey.ToXmlString(true);

提取序列号:

X509Certificate2 x509 = new X509Certificate2(p12FullName, hfMchId, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);


string SerialNumber = x509.SerialNumber;

 

--

2021年1月21日

如果你就是需要X509Certificate2 这个实体对象。

那么把证书安装到windows证书库。如果是私钥证书,要分配权限,如:Everyone。然后在windows证书库中查找并使用这个证书。

从证书库中检索出X509Certificate2  对象:https://www.cnblogs.com/runliuv/p/14301623.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM