首页 > 解决方案 > 从 ASP.NET (C#) 访问服务器证书

问题描述

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

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

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

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

HttpContext.Current.Request.ClientCertificate

将为空/空...我正在寻找Server Certificate,如果可能的话,我正在寻找 Server Certificate 的完整链,以便我可以检查 CA Root。

标签: c#servercertificate

解决方案


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

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();

推荐阅读