c# - 从 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。
解决方案
您可以从证书存储中获取证书,您可以根据需要通过主题名称、指纹或其他方式来获取证书。您需要确定其中哪些可用 - 并在此示例中更改“查找类型”:
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();
推荐阅读
- javascript - 如何在按钮单击或单击离开时关闭两个嵌套的 Material-ui 弹出框
- python - Pandas df 如何显示 df['col']+df['col2'] 不匹配的位置
- javascript - 从父目录运行 Yarn 任务
- python - python中的轮询子进程产生意想不到的结果
- javascript - 在javascript中突出显示选定的项目
- java - 如何添加按钮以启动相机
- r - 如何找到两个字符串列之间的匹配项并以有序的方式将它们组合在一起?
- python - 如何在 applymap() 中避免 NaN?
- docker - Jenkins 管道异常 - 未找到 Docker
- c# - 由于缺少对 Microsoft.Office.Tools.Common.4.0.Utilities 的引用,C# 项目将不再编译