【发布时间】:2018-12-13 12:16:54
【问题描述】:
我在 .Net Core 2.1 中开发了一个简单的 WEB API 服务
我正在尝试实施客户端证书身份验证,因此我只能将 API 访问权限授予在其计算机上安装了特定证书的客户端。
客户端使用浏览器(Chrome、Edge、IE11 或 Firefox)访问 API。
我在 API 方法中添加了证书请求:
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
X509Certificate2 cert = Request.HttpContext.Connection.ClientCertificate;
if (cert!=null && cert.Verify())
{
//more verification here...
return Content("....", "application/json");
}
else
{
return Content("....", "application/json");
}
}
然后我安装了一个自签名证书并添加到受信任的根目录中,从而启用客户端身份验证目的。
但变量 cert 始终为空,当我请求页面时,浏览器甚至没有提示我使用证书。
我想是因为我必须设置 Web 服务器必须请求客户端证书的地方,因为可以在 IIS 中设置,但在我的开发环境中,我使用的是 IIS Express。
如何强制 IIS express 请求客户端证书?
【问题讨论】:
-
浏览器不关心windows受信任的根目录,他们有自己的列表,但是本地运行的IIS会:-)
-
看来证书需要从 CurrentUser/My 路径读取。如果我在这里错了,请纠正我。
标签: asp.net asp.net-core certificate