使用winform应用程序并连接到套接字,我可以创建SSLStream并进行身份验证。使用以下代码
// Authenticate ourself as a client.
this.sslStream.AuthenticateAsClient(SSL_TARGET_HOST);
现在有时应用程序抛出AuthenticationException,如果没有安装客户端机器证书。
我想知道在调用connect之前是否有办法检查客户端计算机上是否安装了特定证书?
答案 0 :(得分:3)
您可以使用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();
}