关于IIS中客户端数字证书的认证问题释疑

最近一直在研究IIS中客户端数字证书的认证问题。

我们知道,IIS提供了两种方法,在SSL且强制要求客户端证书的情况下,取得客户端数字证书的信息。

一种是通过Request.ClientCertificate,这个方法的有点是可以取到数字证书的二进制流,但是处理中文上有问题。另一个方法是Request.ServerVariables,这个处理中文不存在乱码问题,但是取得的信息量没有前者多。

而且只取得证书的发行者名称,验证起来实在是太荒唐了,那个恐怕根本不能称其为验证,即是是两个不同的CA也可以注册相同的名称,我们无法根据这个判断是不是受信任的CA颁发的证书。

但是,因为ASP没法轻易地与本地系统的CA通信,无法查询本地CA已经颁发的证书,所以也就不能对客户端提供的证书的序列号等具有唯一性的字段进行验证。

数字证书里面有一个“颁发者密钥标识符”的字段(客户端),CA根证书显示的是“使用者密钥标识符”,这两个字段是匹配的,而且是唯一的(针对一个CA而言)。但是无法得到这个值,失败……

以上……思考+实践过程……

后来发现自己自作多情了,MS的东西特点就是对人友好,简洁方便……怎么自己还想着用这么土鳖的办法呢。

IIS如果强制请求数字证书,那么就是在本机的信任证书颁发机构里面查找客户提供证书的颁发机构,如果失败,就拒绝客户端连接。(是不是非常棒?)

这样一来,用数字证书代替username、password的朋友就享福了,只要控制好服务器的信任CA列表,再验证客户证书的几个可以轻易获得的字段,就可以代替传统的验证了,而且不会发生用另一个受信任CA颁发的证书冒名顶替的事情。

我这土鳖的脑袋。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值