证书验证和添加证书
问题: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);
}
}
浙公网安备 33010602011771号