2011-04-08 131 views
3

我有一个我要求客户端证书的网站。根据SSL客户端证书(授权)限制对Web服务的访问

我已经配置我的IIS网站与以下:

<location path="MySecureService"> 
    <system.webServer> 
<security> 
    <access sslFlags="SSl, SslRequireCert"/> 
    <authentication> 
    <anonymousAuthentication enabled="true"/> 
    <windowsAuthentication enabled="true"></windowsAuthentication> 
    <digestAuthentication enabled="false"/> 
    <basicAuthentication enabled="false"/> 
    <iisClientCertificateMappingAuthentication enabled="true" oneToOneCertificateMappingsEnabled="true" > 
     <oneToOneMappings> 
     <add enabled="true" userName="myUsername" password="myPassword" 
      certificate=[certificate-blob-here] 
      /> 
     </oneToOneMappings> 
    </iisClientCertificateMappingAuthentication> 
    </authentication> 
</security> 

我可以有我的服务器识别根CA“ANY”客户端证书访问此网站。我如何限制只有一些证书的访问?

回答

0

这听起来像你想可能是客户证书映射什么:

http://learn.iis.net/page.aspx/478/configuring-one-to-one-client-certificate-mappings/

另外,我在你的配置是“匿名”设置为true注意到。我从经验中知道,匿名将覆盖windows身份验证,所以我想知道它是否也会覆盖客户提供ssl证书的需要。

+0

这正是“iisClientCertificateMappingAuthentication”部分应该执行的操作:将证书映射到用户。 – Attilah 2011-04-08 11:56:50

+0

但未将匿名设置为true,Web应用程序甚至无法启动,它会引发异常:此服务的安全设置需要“匿名”身份验证,但未启用托管此服务的IIS应用程序。“ – Attilah 2011-04-08 11:58:07

+0

能够访问网站的客户端证书不是来自可信CA的列表吗?我一半怀疑您只是作为匿名用户进行身份验证。另外,当您禁用匿名身份验证标志给我时iis config和您的实际应用程序的.config文件不同步,两者都禁用匿名。最后,我没有看过您的WindowsAuthentication设置,但我几乎可以确定您只能选择一种形式身份验证(无论是Windows还是客户端证书),您都不能同时使用。 – Tung 2011-04-12 03:56:51