PHP如何读取USB KEY里面的数字证书的信息,以前没有接触过这块,请各位高手帮忙解答下。
USB KEY是公安部的,我只是想读取里面的相关信息,比如姓名,警号,身份证号码(当然这些信息在USB  KEY里面都存在的),然后登陆网站的时候读取这些信息,把它写到数据库里(相当于实名制访问)。只是读取不需要验证。
apache的环境除了配置SSL以外,还需要做什么样的处理,是不是需要第三方中间件。请各位高手帮忙解答下,帮忙想想办法

解决方案 »

  1.   

    直接读取当然不行了,要通过USB KEY的控件来读的,比如ocx之类的控件
      

  2.   

    根本就不需要什么中间件,直接使用php+openssl就可以读取了。当然你的apache需要mod_ssl配合才行。需要注意的是:用$_SERVER变量读取的DN是乱码,因为公安部发的证书DN是中文姓名+身份证号码,我研究了很长时间都不能将DN转码,所以显示出来的DN内容是乱码的,听说公安部CA中心本身就不支持windows,这个无从考究,不过用微软的capicom.dll接口在windows环境下读取的DN是正常的,只是通过mod_ssl将PKI内容加入APACHE环境变量时变成乱码罢了,必须使用Openssl接口读出来,然后通过内码转换为utf-8或者gbk就可以正常显示了。如果有兴趣可以在内网进行交流,目前我做的系统全部用上了这个PKI。内码的地址是http://www.f-hz.gzs.gd。
      

  3.   

    可以参考一下工行的U盾,主要问题还是客户端读取UKey里面内容
      

  4.   

    我以前搞过,来给你讲讲情况公安部的pki、pmi 我所了解的用的是吉大正元的证书应用管理系统,吉大正元提供了相关的服务端包和开发支持包 我知道有java和vc的支持版本 以java为例 在tomcat的lib目录下要部署一个jar包 是关于证书支持的 吉大正元提供
    另外,还有一个供开发使用,提取pki证书相关信息的系列类库  也是吉大正元提供tomcat上除了配8443那个端口的https验证 要做两件事 生成有效的服务端证书和部署证书(那个证书目录好像是jdk下的security目录 我忘记了) 
    一个标准的处理的流程如下:首先要通过公安局的的证书中心签署生成服务端证书和在tomcat上部署 不知道你这个做了没 或者已经搞好了 部署目录也挺关键
    如何生成服务端证书 网上文章很多 但切记 要公安的证书中心做一下签名才行如果部署正常正常 客户端访问时,服务端会请求客户端的证书,插上Usb key
    随后 客户端证书会传递并写在session里(有个系统session对象 关于x509的 具体名字忘了) 这是个x509证书对象 就是usb key证书里的信息 
    上面这些操作系统完成,不需要编程,下面是编程的获得session中的那个x509对象,通过相关类库,提取获得对象中的身份证号 姓名 等等信息  有相关的数据结构问厂商资料  
    吉大正元的相关涉及的开发应该有个例子文档和类的说明的  希望有所帮助
      

  5.   

    终于可以通过openssl函数完全读取USB-KEY中的内容了,公安部吉大公司制作的证书里有一些扩展信息,例如职级、警种、岗位等信息,当然单位的信息是通过O、L、OU等信息组合而成的。通过PHP和ASP两种方式读取的证书DN有点区别,ASP直接读取subject名称即可以得到姓名和身份证号码,而通过PHP读取的DN是经过了编码的姓名和身份证号码,但是读取subject里面DN却是正常的。需要注意的是,读出来的内容是UTF-8编码的。
      

  6.   

    ASP/ASP.NET页面获取客户端证书的方法
    http://blog.csdn.net/PKI_CA/archive/2008/04/28/2339954.aspx我的问题是:我用windows2003建立了SSL服务器,制作了服务器证书,也制作安装了客户端证书,也安装了数字证书驱动。但打开网站时,选择数字证书列表 里并不包含 我的PKI数字证书。是不是服务器证书必须经过数字证书中心签名。有没有其他办法??
      

  7.   

    $_SERVER["CERT_SUBJECT"]这个就是usb key里的数字证书相关信息。楼主可以输出看看。
      

  8.   

    以前做过一个加密狗的东西,用MFC写的,写入指定字符到特定U盘里面,然后再把这个读取字符的程序放入U盘,双击运行,然后再读取相对应的字符,如果正确则进入相对应后台,如果不是,则提示错误,不知你需要完成的功能是不是类似这样的..................