智能卡的使用

    最近做一个小功能,智能卡实现SSL双向认证登录,替代原有帐号密码的登录方式。SSL的双向认证,网上一搜一大把资料,tomcat、jboss、apache、nginx都可以直接配置实现。做的过程中由于自己从未使用过智能卡,对智能卡中的证书使用存在疑惑,网上也很少有直接描述智能卡实际使用的例子,大多讲其实现原理,CSPPKI等等。本篇文章算是一个小小的解密吧,所有对智能卡使用存在疑惑的同学,可以松一口气了。

    这个小功能最让人纠结的地方在于,开始手头没有卡,无法实际测试验证,仅通过资料了解智能卡中证书的私钥是无法从外部读取的,只能将数据送进去加密后返回来。那么,智能卡里面的证书是如何在SSL双向认证过程中发挥作用的,到底需不需要编码实现证书的选取和导入等,到底会不会用到CAPICOM等中间件...

      事实证明智能卡的使用,远比我想象的要简单。

      首先,我们需要安装读卡器驱动和智能卡驱动,二者缺一不可,简单地把智能卡理解为一种存储硬件,大家可能就很容易理解为什么智能卡也需要驱动了。

      下图为驱动安装后的,插入智能卡的效果图:

      智能卡的使用_第1张图片

      如何配置服务端如tomcat,就不详细说了,https端口上增加trustStore以及相关属性,该trustStore中导入客户端证书的根证书(导入客户端不含私钥的证书本身也可以)。见下图,8444即为进行SSL双向认证的端口:

     智能卡的使用_第2张图片

     读卡器中插入智能卡,读卡器显示灯一阵狂闪后,IE中多了客户端证书,建行的USBkey也给我装了证书,最后一个就是:

     智能卡的使用_第3张图片

      现在我们访问tomcat的双向认证接口,效果如下(chrome,IE,safari效果相同):

     智能卡的使用_第4张图片

    点击确定,提示输入PIN:

    智能卡的使用_第5张图片

    输入正确的PIN后,访问页面成功:

    智能卡的使用_第6张图片

      是不是很省心,基于智能卡证书的SSL双向认证过程,完全不用我们操心,只要插过一次卡,那么系统就会保留这个证书的大部分信息(私钥以外的部分),系统还能知道这个证书是从智能卡中导入的,在不插卡的情况下,访问双向认证接口,会自动弹框提示插卡:

     智能卡的使用_第7张图片

    

你可能感兴趣的:(web应用)