【发布时间】:2015-02-04 02:16:36
【问题描述】:
为未来的读者编辑:不幸的是,赏金授予了答案 不工作;我现在对此无能为力。但请阅读我自己的答案 下面(通过测试) - 确认可以使用最少的代码更改
我们有一个完全在 ASP.NET WebAPI 2.2 中的 Azure 云服务 (WebRole)(没有 MVC,前端是 Angular)。我们的一些控制器/REST 端点通过 SSL(客户端证书身份验证/相互身份验证)与第 3 方云服务通信,其余控制器/端点与 HTML5/AngularJS 前端通信,也通过 SSL(但更传统的服务器身份验证SSL)。我们没有任何非 SSL 端点。我们通过云服务启动任务启用了客户端 SSL,例如:
IF NOT DEFINED APPCMD SET APPCMD=%SystemRoot%\system32\inetsrv\AppCmd.exe
%APPCMD% unlock config /section:system.webServer/security/access
问题:该设置是站点范围的,因此即使用户点击第一页(比如https://domain.com,返回 angularJS 的 index.html),他们的浏览器也会要求他们提供客户端 SSL 证书。 (下图)
如果有办法
- 将客户端 SSL 证书请求限制为仅与第 3 方云服务通信的 WebAPI 控制器?
或
- 为我们的前端驱动 webapi 控制器跳过客户端 SSL 身份验证?
我们服务器的web.config比较复杂,但是相关的sn-p如下:
<system.webServer>
<security>
<access sslFlags="SslNegotiateCert" />
</security>
</system.webServer>
客户端访问常规 WebAPI 端点但尝试客户端 SSL 身份验证的屏幕截图(发生在任何浏览器、Chrome、Firefox 或 IE 中)
【问题讨论】:
-
你能显示你的结果 serverWebConfig 和应用程序 WebConfig 吗?
-
服务器 web.config 上面,应用程序 webconfig 不存在,因为客户端应用程序是浏览器
-
我认为这个问题更适合服务器故障。
标签: c# ssl asp.net-web-api https client-certificates