如何将特定页面限制为证书身份验证?

时间:2015-07-30 16:07:51

标签: c# asp.net ssl iis-7 x509certificate

在我的ASP.NET网络应用程序中,我创建了Default.aspx(设置为我的起始页面),以及一个名为SmartCard的新文件夹,其中包含WebForm1.aspx。如何配置Web.Config以在访问SmartCard / WebForm1.aspx时提示用户输入证书,但是在Default.aspx加载时不提示?

this问题的接受答案中:

  

如果您的应用程序托管在IIS中,则只需添加(在web.config中)一个部分,其中说明这些页面需要客户端证书。然后,浏览器将询问用户是否有证书。

从上面的回答中,我在StackOverflow上查了更多内容并找到了this。从他们接受的答案我把以下部分放在Web.Config:

<location path="SmartCard">
  <system.webServer>
    <security>
      <access sslFlags="SslRequireCert" />
    </security>
 </system.webServer>

然后我修改了C:\ Windows \ System32 \ inetsrv \ config(或安装的相应目录)中的applicationHost.config并更改了以下行:

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

为:

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

但是,我仍然会收到有关网站加载证书的提示。我首先得到以下屏幕:

enter image description here

点击&#34;继续浏览此网站&#34;然后,当Default.aspx加载时,我会被提示选择证书。但是,我只想在SmartCard / WebForm1.aspx加载时提示选择证书!

非常感谢任何帮助!

以下是我在IIS-7中的网站设置:

SSL设置:

enter image description here

网站绑定: enter image description here enter image description here

* MyDevCert是自签名的

更新

我在SmartCard目录中创建了一个新的Web.Config文件,其中包含以下内容:

 <?xml version="1.0"?>
 <configuration>

    <security>
       <access sslFlags="SslRequireCert" />
    </security>
    <system.web></system.web>

 </configuration>

然后我删除了&#39;位置&#39;来自基础Web.Config的标记。

Base Web.Config:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <identity impersonate="false" />
  </system.web>
</configuration>

但是,我仍然得到了这个网站的安全证书存在问题&#34;屏幕,一旦我点击&#34;继续浏览此网站&#34;

,我会收到提示证书

1 个答案:

答案 0 :(得分:1)

从我所看到的情况来看,sslFlags只能有一个值。

参见http://www.iis.net/configreference/system.webserver/security/accesshttps://msdn.microsoft.com/en-us/library/ms689458(v=VS.90).aspx

  

sslFlags属性可以是以下可能值之一。默认值为“无”。