繁体   English   中英

检查客户端上安装的SSL证书

[英]Check SSL Certificate installed, on client Side

在winform应用程序上工作并连接到socket,我可以创建SSLStream并进行身份验证。 使用以下代码

// Authenticate ourself as a client.
                    this.sslStream.AuthenticateAsClient(SSL_TARGET_HOST);

现在有时应用程序抛出AuthenticationException,如果没有安装客户端机器证书。

我想知道在调用连接之前是否有办法检查客户端计算机上是否安装了特定证书?

您可以使用X509Store类来确定特定证书库中安装的证书。 您可以通过多种方式查找证书(例如主题名称,发行人姓名,序列号等)。

例如,要打开当前用户的个人存储并按主题名称搜索证书:

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

try
{
    store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

    X509Certificate2Collection foundCerts = store.Certificates.Find(X509FindType.FindBySubjectName, "MY CERTIFICATE SUJECT NAME", true);

    if (foundCerts.Count == 0)
    {
        // Cert not found
    }
    else
    {   
        X509Certificate2 cert = foundCerts[0]; // Get first matching certificate
    }
}
finally
{
    store.Close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM