c# - 可以在 web.config 中配置客户端证书设置吗

标签 c# asp.net .net iis ssl

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

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

有什么想法吗?

最佳答案

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

例如,要在目录接口(interface)中要求 SSL 证书,您可以将以下 block 添加到 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 文档中的标志值是:

None. This default setting disables SSL for the site or application.

Ssl. The site or application requires SSL.

SslNegotiateCert. The site or application accepts client certificates for authentication.

SslRequireCert. The site or application requires client certificates for authentication. Ssl128. The site or application requires 128-bit SSL certificate encryption.

然而

默认情况下不能覆盖access 部分。

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

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

到:

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

关于c# - 可以在 web.config 中配置客户端证书设置吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8719416/

相关文章:

c# - 是否有更好/更快的方式来访问原始数据?

iphone - 移动网站的开发与普通网站的开发有何不同?

c# - 文本框上的 jquery val() 不设置 DOM 值属性

c# - 监控windows访问的文件

c# - WCF 与 Java Web 服务通信

c# - C# 中的 Des 和 3Des 以及 ecb(来自 C)

c# - 通过套接字将 C# 结构发送到 C++

c# - ManualResetEvent.WaitOne() 抛出 NullReferenceException : Object reference not set to an instance of an object

asp.net - 设置 Telerik 的默认值 :GridDropDownColumn inside of telerik:RadGrid

c# - 了解 .Net 中的 32 位与 64 位