現象:大量調用.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