前一篇介绍了证书系统和与系统的接口,那么有了接口证书如何在不同系统中使用是过去几年公司重点在研究和探索的内容,证书的应用场景我之前也做过相应的介绍,在这里详细讲解下使用证书进行身份认证。
身份认证的一般流程
使用口令认证的流程是:用户注册,系统保存账户和密码,用户用注册的名称和密码登录,系统判断登录的账户和密码是否正确,在系统中有那些权限,用户登录成功进入首页。
使用证书认证接口:后客户端的步骤,浏览器加载插件,插件调取u盾接口获取证书信息,通过js展现在页面上,用户选择自己的证书点击登录输入u盾pin码,js将pin码以及待签名原文这里是服务的产生的随机数通过session传到前端,u盾通过pin码获取到密钥使用权限对随机数签名返回插件,插件通过js调用返回服务端,这样客户端调用证书登录过程完毕,接下来是服务端调用过程。
服务端验证过程,服务端加载了证书验证的接口包。在验证流程中获取从浏览器传来的签名结果,从session中获取到本次登录使用的随机数,然后进行证书签名验证,验证过程包括签名验证,证书颁发机构验证,证书有效期验证,证书是否吊销验证,验证没有问题后从签名结果中获取到证书,再解析证书主题得到存放在证书主题中的用户信息,之后就可以通过与保存在系统中的权限信息进行匹配,假如匹配成功则返回成功用户进入首页。
在实践中如何应用
集成方式
接口集成
这种方式是产品最初期的形态,也就是说每谈一次新客户,客户有新系统,就要与系统集成一次,然后收取一次集成费用以及接口费用,而且由于系统的语言以及开发人员的水平不同,实施难度不同。不像现在云平台的兴起,业务开发人员对api的理解越来越高。那时需要现场培训交流,甚至直接在业务系统里面嵌入代码,虽然接口已经封装的足够简单。所以后来的思路一方面是接口文档的规范化和demo的标准化,一方面是与流行业务系统的提前整合这样证书功能就变成业务系统的一个功能模块了。
接口预埋
与业务系统进行深度集成绑定是证书应用的最好的方式,但是后期维护的成本也比较高,只要业务系统版本升级就需要不断跟随测试。比如和某oa系统集成,oa系统采用比较规范的mvc架构,在使用外部接口的时候,它首先会封装出来一些接口出来,然后我们再去实现这些接口,如何调用这些接口,会参考我们的demo。这样弄下来双方都需要开发,不过耦合度就比较高,对于战略合作伙伴来说不失为一种好方式。
U盾集成
1.要检查u盾的插入拔出状态,这样可以防止u盾的拥有者不在电脑旁但u盾插入时被别人非法操作
2.u盾的管理,这里要能够管理u盾的pin码,当密码忘记时要安全的重置。
3.u盾的定制,定制主要看客户的需求,比如外观的选择,logo的印刷,驱动定制等。有种特殊的情况是厂商的key已经在机器上安装过驱动了,假如再插入一个新的设备那么就会出现识别不出来或者个别功能失效的问题,这时就需要对驱动进行唯一化定制。
配置模式
以上两种针对国内的软件是有效的因为都是自己开发的,针对国外的软件比如微软或者ibm的软件或者一些硬件设备,由于没法修改的,基本都是以配置为主。假如该软件没有证书认证功能那就基本没戏了,不过目前为止还没有软件是不支持的,下面介绍下通过配置方式来进行证书身份认证:
微软配置
微软的官方文档里面有讲解如何进行智能卡域登录的,它的后台认证协议采用自己的kebero协议,这里不对协议进行介绍,也不用它自己的ca进行配置,而是使用第三方ca来进行身份认证。简单说来只需要三步:
第一步导入ca的信任体系到域控制器的ca证书存储相应的位置,同时也要把信任体系产生的吊销列表也导入;
第二步将信任体系导入要采用智能卡认证的组策略中;
第三步打开组策略中的智能卡认证方式同时进行下发,之后刷新组策略注销重新登录就可以进行认证了。该步骤也是经过多次尝试后才可以使用。其中需要注意的是证书主题项dn值要与域控中的组信息和个人信息匹配,否则由于找不到该用户也会出现错误提示。
一般软硬件配置
按照经验来看ibm的软件、国外的设备如f5,web中间件如tomcat和apache,国内的设备如vpn等都是采用文件或者界面配置的方式。
第一步是启用ssl端口443或者8443,根据需要打开单向认证或双向认证,单向意思是客户端认证服务端身份而双向是客户端和服务端双方都要认证对方身份。身份的标识就是数字证书,下面就会配置服务器证书和客户端证书。
第二步制作jks文件或keystore文件,这里主要是把证书信任链导入以及正确产生和导入服务器证书。这里不再详述会在后续的文章中详述。在配置文件或者界面中指定正确的文件后就可以重启服务了。
第三步用户权限配置,这里不同的设备是不一样的,比如ibm的系统会有专门的服务将证书与个人账户信息绑定,而在国内的vpn中会事先建立权限组进行之后再进行绑定。一些服务就要配合目录服务来统一管理用户权限了。
第四步在客户端使用u盾重新登录进行测试。在浏览器的效果是会弹出对话框选择要登录的证书,假如能够弹出u盾中的个人证书选择后进入系统显示个人信息则整个部署过程就完成了。
结论
使用证书进行身份认证,是一个不断积累的过程,各软件厂商在证书认证这块还没有完全统一,各家在实现中也会多少有点差别,但是基本原理是一致的,只有不断实践和总结,对于ca厂商来说才会拥有更好的服务口碑。
网友评论