runliuv

runliuv@cnblogs

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

 

复制代码
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);
}

 

posted on   runliuv  阅读(395)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示