【问题标题】:IIS application - some Urls should require client ssl certificates and other don't ask for itIIS 应用程序 - 一些 Url 应该需要客户端 ssl 证书,而其他不需要它
【发布时间】:2012-10-19 19:33:30
【问题描述】:

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

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

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

所以我需要 2 组 URL(为简单起见,假设为 2 个 URL) - 一组 IIS 将 需要 SSL 证书,一组 URL 不要求证书。

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

【问题讨论】:

    标签: asp.net authentication iis ssl client-certificates


    【解决方案1】:

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

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

    第一个需要 SSL,第二个不需要。

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

    我认为您不能在 IIS 中执行此操作。希望这会为您指明正确的方向。

    【讨论】:

    • 好像你在谈论服务器证书,而我在谈论客户端证书。
    【解决方案2】:

    最终被解决了

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

    【讨论】:

    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多