小编Joe*_* D.的帖子

DoD CAC身份验证 - 使用.NET C#,Windows Server 2008 R2,IIS 7.5的客户端证书问题

我们为DoD开发了一个.NET C#Web应用程序,它使用CAC(通用访问卡)作为唯一的身份验证方法.我们在服务器上有一个受信任的SSL,应用程序在几个位置运行,并且一切正常 - 在大多数情况下.

问题#1

主要问题是,在我们的某些内部开发服务器上,当您使用读卡器中的有效CAC进行"登录"时,只显示一个证书,而不是来自CAC.它用于通过网络验证我的工作笔记本电脑("客户端身份验证"和"智能卡登录"属性在"证书"管理单元中进行检查).

我们在另一个网络上有另一台服务器,其中客户端证书身份验证运行良好 - 它显示来自CAC的证书,并且不显示上述证书.我已经尝试在这两台服务器上并排比较Windows Server 2008 R2中我能想到的一切,看看我是否能找到可能不同的东西,但它们似乎都是Windows Server 2008的默认安装R2.

以下代码用于读取客户端证书:

if (Request.ClientCertificate.IsPresent)
{
    HttpClientCertificate Cert = HttpContext.Current.Request.ClientCertificate;
    //use cert info to check db and create session
}
Run Code Online (Sandbox Code Playgroud)

此文件位于IIS> SSL设置>"要求SSL"和"需要客户端证书"的目录中.

我不知道这是服务器配置问题还是编码问题,但是我已经开展了几个月的工作,并且无法找到答案为什么应用程序只有在托管一些CAC证书时才能获得CAC证书服务器.

问题#2

如果我在正确读取CAC的服务器上访问应用程序,它会从用于访问该计算机上的应用程序的所有CAC中提取所有证书的副本,而不是仅从读卡器中的CAC证书中获取证书.

AKO [https://akologin.us.army.mil/]至少过滤掉电子邮件证书; 但是,该站点不托管在Windows机器上.

结论

在我看来,除了Request.ClientCertificate集合和IIS中的两个复选框之外,还必须有一个更好,更深入的机制来访问和过滤来自智能卡读卡器的客户端证书.

.net windows iis client-certificates cac

6
推荐指数
2
解决办法
5209
查看次数

标签 统计

.net ×1

cac ×1

client-certificates ×1

iis ×1

windows ×1