zoukankan      html  css  js  c++  java
  • [转]关于OpenSSL支持USBKEY证书的尝试

    1、          如果USB-KEY的驱动程序支持PKCS#11接口,则OpenSSL通过engine可以比较方便地访问USB-KEY

    2、           听说最新版本的OpenSSL 0.9.8i版本已经增WINDOWS CAPI的支持。

    因本人比较懒,就直接尝试了OpenSSL 0.9.8i版本。

    在网上参考了这个网站的信息

    http://markmail.org/message/hrrq3hhciz6vml6w#query:OPENSSL%20CryptoAPI%20ENGINE+page:1+mid:ufpkpzqtk5ohn5hz+state:results

    有兴趣的朋友可以去看看。

     

    好,现在开始工作。

    1、          下载OpenSSL 0.9.8i,并解包,地址:

    http://www.openssl.org/source/openssl-0.9.8i.tar.gz

    2、          下载ActivePerl,并安装,地址:

    http://www.activestate.com/Products/activeperl/index.mhtml

    3、          编译库,因为OpenSSL 0.9.8i默认是不打开CAPI支持的,所以在编译前先修改配置。因为我用的是VC,所以用

    perl Configure VC-WIN32 enable-capieng -DOPENSSL_SSL_CLIENT_ENGINE_AUTO=capi

    先打开enable-capieng,再把SSL_CLIENTENGINE自动指向CAPI

    4、          开始编译,编译都一样,我就不多说了,网上资料多的是。

    经过上面步骤,库的编译就完成了。

     

    下面开始测试。

    以前我用OPENSSLCLINET的时候,是通过文件证书方式提供,不提供证书,对那些需要客户端证书的网站是无法访问。

    基于这个前提,进行了以下试验。

    进行对USB-KEY的试验(特别说明,试验用的USB-KEY是公安专用,所以第一次访问USB-KEY时会要求输入KEY的密码,并在公安内网中进行试验。)

    1、          用新编译的软件发起HTTPS页面请求,软件弹出公安KEY的密码输入窗口。(可以证明去访问了CAPI,并成功访问到该USB)。

    2、          输入密码后,返回的页面中带有USB-KEY主人的信息。(被证明USB-KEY支持成功)

    3、          拨出USB-KEY,再次请求该页面。返回的页面中不带任何人员信息,直接跳转到登录窗口。

    4、          再次插入(测试软件不重启),再次请求HTTPS,又出现密码输入窗口,输入密码后,成功访问页面,页面中并带有USB-KEY主人的信息。

    5、          再次请求该页面,没有出现密码输入窗口,页面返回正常,即同样带有USB-KEY主人的信息。

    通过以上五步测试,证明新编译的OPENSSL 0.9.8i版本可以自动的向CAPI进行调用。这给需要在OPENSSL中支持CAPI接口的开发者来说是一种福音,至少对我来说是,不用自己写代码,还要测试等等,呵呵。

    这个版本好像只支持WINDOWS下的CAPI接口,LINUX下的不清楚了。就说到这里,本着OPENSSL开源的原则,我把我的测试经过供大家参考。以后如果有类似需求的朋友可以尝试一下。

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/adylee/p/2878291.html
Copyright © 2011-2022 走看看