3

我有一个 IIS7 托管的 asp .Net 应用程序(用 c# 编写)。

有些应用程序 URL 需要使用客户端证书访问,有些则必须在没有它的情况下访问。

这不是 此 SA 问题的重复,因为将应用程序设置为所有 URL 的“接受客户端证书”会导致某些浏览器 (Android) 向用户显示一个对话框以选择客户端证书,即使它实际上并不需要对于这些特定的网址。

因此,我需要 2 组 Urls(为简单起见,假设为 2 Urls)- 一组 IIS需要SSL 证书,一组 url不需要证书。

有什么方法可以在 IIS 中实现这一点,还是我必须将我的应用程序分成 2 个?

4

2 回答 2

1

最终解决了它

  1. 在我的应用程序下为不需要协商客户端证书的 URL 创建一个虚拟目录。
  2. 将虚拟目录的 ssl 设置中的客户端证书设置更改为“忽略”。
  3. 虚拟目录指向我的应用程序
  4. 由于 web 配置现在被读取两次(一次用于虚拟目录,一次用于应用程序),需要使某些设置具有幂等性(意思是 - 在添加某些 web.config 设置之前添加删除)。
  5. 主应用 ssl 客户端证书设置保持在“接受”状态。
于 2012-11-02T23:46:29.137 回答
0

In MVC there is an attribute you can add to your controller methods such as:

 [RequireHttps]
public ActionResult PageOne() {
     return this.View();
}

 public ActionResult PageTwo() {
    return this.View(); }

The first would require SSL, the second would not.

In WebForms you could create a httpModule that checks the url in the ApplicationBeginRequest method and redirects to the SSL page if required, but this would need to be on a page by page basis.

I do not think you can do this in IIS. Hopefully this points you in the right direction.

于 2012-10-30T13:57:01.587 回答