是否可以在web.config中配置客户端证书设置

时间:2012-01-03 22:15:47

标签: c# asp.net .net iis ssl

我正在使用SSL应用程序,并希望控制哪些文件夹忽略,要求或接受客户端认证。

最终目标是让webApp的子文件夹忽略客户端认证。我不想通过IIS执行此操作,因为它必须在整个Web场中进行复制。

有什么想法吗?

2 个答案:

答案 0 :(得分:28)

您可以在web.config(或相应子目录中的web.configs)中使用access部分和locations的组合来配置它。

例如,要在目录Interface中要求SSL证书,可以将以下块添加到web.config的配置部分:

  <location path="Interface">
    <system.webServer>
      <security>
        <access sslFlags="Ssl,SslRequireCert" />
      </security>
    </system.webServer>
  </location>

注意:正如@Jonathan DeMarks在评论中所述,我还需要包含SslNegotiateCert才能使其正常运行(使用IIS 8.5和Chrome)。所以我的工作配置是: sslFlags="Ssl,SslRequireCert,SslNegotiateCert" 事实上,我收到一条错误消息,指出我正在指定SslRequireCert,但我可以使用SslNegotiateCert

请注意,如果您想要Ssl,则必须添加它并使用相应的证书标志。

technet文档中的标志值为:

  

无。此默认设置禁用站点或应用程序的SSL。

     

SSL。该网站或应用程序需要SSL。

     

SslNegotiateCert。站点或应用程序接受客户端证书进行身份验证。

     

SslRequireCert。站点或应用程序需要客户端证书进行身份验证       SSL128。站点或应用程序需要128位SSL证书加密。

<强>无论其

默认情况下,access部分无法覆盖。

为了支持这一点,您必须在C:\ Windows \ System32 \ inetsrv \ config(或安装的相应目录)中修改applicationHost.config并更改以下行:

<section name="access" overrideModeDefault="Deny" />

为:

<section name="access" overrideModeDefault="Allow" />

答案 1 :(得分:0)

我以与IIS(浏览器中的“显示证书”对话框,如果未选择则返回403.7)相同的方式工作的方法是在web.config中按以下顺序使用此序列: Ssl,SslNegotiateCert, SslRequireCert

因此,该部分如下所示:

recycler_provider = layoutInflater.findViewById<RecyclerView>(R.id.your_recyclerview_id)