2012-10-30 23 views
3

我有IIS7托管,asp.net应用程序(用C#编写的)。IIS应用程序 - 一些Url应该要求客户端SSL证书和其他不要求它

某些应用程序URL需要使用客户端证书进行访问,有些应该在没有它的情况下进行访问。

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

所以我需要2套的URL(假设2个网址为简单起见) - 一个IIS将需要 SSL证书和一个网址意志没有要求证书。

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

回答

0

最终解决它通过

  1. 我的要求,没有客户端证书协商的URL应用下创建一个虚拟目录。
  2. 更改了SSL设置中虚拟目录为“忽略”的客户端证书设置。
  3. 虚拟目录指向我的应用程序
  4. 由于web配置现在被读取两次(一次用于虚拟目录,一次用于应用程序),需要进行一些设置idempotent(含义 - 在添加之前添加删除对于一些web.config设置)。
  5. 主应用程序ssl客户端证书设置保持“接受”状态。
+0

也许你可以使用位置标签在这里? https://stackoverflow.com/a/29237456/220230 – Piedone

0

在MVC中有你可以添加到您的控制器的方法,如一个属性:

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

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

首先需要SSL,第二不会。

在WebForms中,您可以创建一个httpModule来检查ApplicationBeginRequest方法中的url,并根据需要重定向到SSL页面,但这需要逐页进行。

我不认为你可以在IIS中做到这一点。希望这可以让你指向正确的方向。

+1

好像你在谈论服务器证书,而我正在谈论客户端证书。 –

相关问题