证书验证和添加证书

问题:AuthenticateAsClient验证时间12秒

原因:离线电脑没有安装对应的证书,X509Chain.Build()会上网查找受信任的证书。(网上问题资料 https://blogs.msdn.microsoft.com/alejacma/2011/09/27/big-delay-when-calling-sslstream-authenticateasclient/

解决方法:添加证书到电脑的受信任根证书列表
        private bool CheckCert()
        {
            bool result = false;
            X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
            try
            {
                store.Open(OpenFlags.ReadWrite);
                foreach(var item in store.Certificates)
                {
                    if(item.SubjectName.Name== "O=Internet Widgits Pty Ltd, S=Some-State, C=AU")
                    {
                        return true;
                    }
                }
            }
            finally
            {
                store.Close();
            }
            return result;
        }

        private void CreateCert()
        {
            try
            {
                string certPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cacert.pem");
                X509Certificate2 certificate = new X509Certificate2(certPath);
                X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
                store.Open(OpenFlags.ReadWrite);
                store.Remove(certificate);   //可省略
                store.Add(certificate);
                store.Close();
            }
            catch(Exception e)
            {
                Log4NetHelper.GetInstance().ErrorLog(e);
            }
        }

posted on 2020-05-11 16:43  fanu  阅读(416)  评论(0)    收藏  举报

导航