Asp.net 配置IIS客户端证书映射身份验证

Asp.net 配置IIS客户端证书映射身份验证,asp.net,authentication,iis,ssl,x509certificate,Asp.net,Authentication,Iis,Ssl,X509certificate,我正在尝试在IIS 8、Windows Server 2012上配置IIS客户端证书映射。我看不到applicationHost.config中显示的配置,并且我试图显示的证书没有作为浏览器的选项提供 以下是我迄今为止所尝试的: 在IIS中,我创建了一个名为“PackageManager”的顶级站点: SSL设置如下所示: Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManag

我正在尝试在IIS 8、Windows Server 2012上配置IIS客户端证书映射。我看不到applicationHost.config中显示的配置,并且我试图显示的证书没有作为浏览器的选项提供

以下是我迄今为止所尝试的:

在IIS中,我创建了一个名为“PackageManager”的顶级站点:

SSL设置如下所示:

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication" -name "enabled" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication" -name "defaultLogonDomain" -value "CMC"

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication/manyToOneMappings" -name "." -value @{name='My 1st Mapping';description='1st User Mapping';userName='DOMAIN\username';password='XXXXXXXXXXX'}

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication/manyToOneMappings/add[@name='My 1st Mapping']/rules" -name "." -value @{certificateField='Subject';certificateSubField='CN';matchCriteria='*.mydomain.com';compareCaseSensitive='False'}

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication/manyToOneMappings/add[@name='My 1st Mapping']/rules" -name "." -value @{certificateField='Issuer';certificateSubField='CN';matchCriteria='Go Daddy Secure Certificate Authority - G2';compareCaseSensitive='False'}

身份验证:启用匿名:

在配置编辑器中, 部分:
system.webServer/security/authentication/iisClientCertificateMappingAuthentication
发件人:
ApplicationHost.config
我设定如下:

我需要
manyToneMappings
,以便将证书映射到我的服务帐户(域用户):

在这里,我创建了两条规则来匹配GoDaddy证书的主题和发行人CN:

然后,我为上述所有内容生成了一个PowerShell脚本,如下所示:

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication" -name "enabled" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication" -name "defaultLogonDomain" -value "CMC"

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication/manyToOneMappings" -name "." -value @{name='My 1st Mapping';description='1st User Mapping';userName='DOMAIN\username';password='XXXXXXXXXXX'}

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication/manyToOneMappings/add[@name='My 1st Mapping']/rules" -name "." -value @{certificateField='Subject';certificateSubField='CN';matchCriteria='*.mydomain.com';compareCaseSensitive='False'}

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'PackageManager' -filter "system.webServer/security/authentication/iisClientCertificateMappingAuthentication/manyToOneMappings/add[@name='My 1st Mapping']/rules" -name "." -value @{certificateField='Issuer';certificateSubField='CN';matchCriteria='Go Daddy Secure Certificate Authority - G2';compareCaseSensitive='False'}
以上所有内容的奇怪之处在于,我在C:\Windows\System32\inetsrv\Config\applicationHost.Config中没有看到对此配置的任何引用。

浏览此网站时,系统会提示我使用证书,但IE没有提供我期望的证书:

那是我一直在试验的自签名证书

然后我被一个可爱的403击中,所以我陷入了僵局

我在配置中做错了什么,它没有显示在applicationHost.config中,为什么我没有选择显示我的客户端证书(它在我的存储中)


我在Windows Server 2012下遇到了同样的问题,我通过在
HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel下添加两个额外的注册表项解决了这个问题:

ClientAuthTrustMode
值类型:
REG\u DWORD
,值数据:
2

SendTrustedIssuerList
值类型:
REG\u DWORD
,值数据:
0


有关详细信息,请参见

您的GoDaddy证书似乎是一个服务器身份验证证书(服务器身份验证OID 1.3.6.1.5.5.7.3.1),IIS可以使用该证书进行SSL安全,并且此证书应安装在证书>>本地计算机>>个人计算机中

对于客户端证书,您需要客户端身份验证OID 1.3.6.1.5.5.7.3.2,并且此OID应安装在证书>>当前用户>>个人中