从ASP.NET(C#)访问服务器证书

时间:2019-04-01 09:54:03

标签: c# server certificate

使用服务器变量(Request.ServerVariables["CERT_SERVER_ISSUER"]),我可以获得一个字符串,表示连接中使用的服务器证书颁发者。

我想访问实际的证书(如果可能,请访问X509Certificate),以便我可以进一步检查该证书。

我想在我的ASP.NET代码中验证服务器证书,以确保没有人简单地单击“ ..proceed”。具体来说,我想检查CA根目录。

我的理解方式-通常浏览器不会提供客户端证书-因此:

HttpContext.Current.Request.ClientCertificate

将为空/空...我正在寻找服务器证书,如果可能的话,还要查找服务器证书的完整链,以便我可以检查CA根目录。

1 个答案:

答案 0 :(得分:0)

您可以从证书存储中获取证书,也可以通过主题名称,指纹或其他方式进行。您需要确定其中有哪些可用-并在此示例中更改“查找类型”:

X509Store store = new X509Store(StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);

X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, "Subject Name", false);
if (certs.Count > 0)
{
    // do something with: certs[0];
};

store.Close();