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

    作者:猩猩人类

    时间:2008-11-13

    因本人工作需要,需要在OpenSSL中访问USB-KEY中的证书和服务器建立连接。

    在神童哥的帮助下,得出二种实现方式。

    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 -DOPENSSL_CAPIENG_DIALOG 

    先打开enable-capieng,再把SSL_CLIENT的ENGINE自动指向CAPI

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

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



    下面开始测试。

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

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

    进行对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开源的原则,我把我的测试经过供大家参考。以后如果有类似需求的朋友可以尝试一下。
  • 相关阅读:
    LightOj1054
    LightOj1028
    Docker仓库(转载)
    Dockerfile(转载)
    Docker存储卷(转载)
    容器虚拟化网络和Docker容器网络(转载)
    Docker镜像管理基础(转载)
    Docker基础用法(转载)
    docker容器技术基础入门(转载)
    Redis 3种安装部署方式
  • 原文地址:https://www.cnblogs.com/adylee/p/1538287.html
Copyright © 2011-2022 走看看