using System.Security.Cryptography.X509Certificates; namespace CommonUtils { public class CertUtil { /// <summary> /// 使用证书commonName来查找。(也可以用指纹或序列号来找) /// </summary> /// <param name="commonName"></param> /// <param name="storeName"></param> /// <returns></returns> public static X509Certificate2 GetCertificate(string commonName, StoreName storeName) { X509Certificate2 certificate = null; string targetName = $"CN={commonName}"; // Look for a certificate in the local machine store. // We will search for a certificate that has a CN (common name) that matches // the currently logged-in user. using (var store = new X509Store(storeName, StoreLocation.LocalMachine)) { store.Open(OpenFlags.MaxAllowed); foreach (var cert in store.Certificates) { var subjectNames = cert.SubjectName.Name.Split(','); foreach (var subjectName in subjectNames) { if (string.IsNullOrWhiteSpace(subjectName)) continue; //要TRIM,有的证书有空格 if (subjectName.Trim()== targetName) { certificate = cert; break; } } if (certificate != null) { break; } } } return certificate; } } }
使用:
X509Certificate2 clientCer = CertUtil.GetCertificate("SIZZZ", StoreName.My);
if (clientCer == null)
{
clientCer = CertUtil.GetCertificate("SIZZZ", StoreName.Root);
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步