1. 程式人生 > 實用技巧 >C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 資料夾體積很大

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;

--