简谈Openssl与usbkey证书认证相结合

一般windows客户端在做证书认证时候,使用微软的winnet相关的函数即可。

但在某些情况下,这种方式不够灵活自由,那么就可以使用openssl库来实现。对于使用p12证书进行客户端认证的代码

在网上随便可以搜出一大堆,但是结合usbkey进行认证的就少之又少。这里介绍一下openssl里的engine技术来解决这种方法。


1.使用较新版本的openssl自带的capi引擎,该引擎即是CryptoAPI ENGINE,引擎的接口函数实际上就是调用CSP接口来实现的。

主要代码在engine/E_capi.c里面,调试一下应该是可以用的。


2.创建自己新的引擎,模仿已有的引擎实现那些基本接口,主要包括engine_st结构体内的init、finish、destory、load_privkey、load_ssl_client_cert、

XXX_meth回调函数指针,那么剩下的工作只是实现这些个接口,至于你想要使用何种api来操作usbkey设备,就十分自由了。


如何调用你的engine?

可以参考源码中的s_client.c中的代码

如有兴趣的朋友,可以一起讨论讨论

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
======================================================= 目录 & 说明 ======================================================= ECCdemo 通过PKCS#11接口创建ECC密钥对,并进行签名和验签操作; ------------------------------------------------------- EnumObj 通过PKCS#11接口列举出Token中的各种对象,如证书,公钥,私钥,秘密密钥; ------------------------------------------------------- exportcert 通过PKCS#11接口输出Token中的证书的一些属性; ------------------------------------------------------- FormatKey 格式化Token,并重新划分公私有区大小,设置PIN码重试次数和密钥对数量。 ------------------------------------------------------- GetUSBInfos 通过PKCS#11接口获得slot, cryptoki, token的属性信息; ------------------------------------------------------- GuoMiTest 通过PKCS#11接口产生ssf33和scb2密钥,并进行加解密运算; ------------------------------------------------------- HMACTest 通过PKCS#11接口产生GENERIC SECRET密钥,并进行HMAC-SHA1功能验证; ------------------------------------------------------- InitToken 通过PKCS#11接口实现初始化操作,并进行Ansi和Utf8字符转换; ------------------------------------------------------- OTPDemo 通过PKCS#11接口产生HOTP密钥,并产生OTP结果; ------------------------------------------------------- PKCSDemo 通过PKCS#11接口创建RSA密钥对,并进行签名、加密、签名验证和解密的运算; ------------------------------------------------------- PKCStest 通过PKCS#11接口产生多种类型的密钥,如DES/3DES/RC2/RC4/RSA,并进行加解密运算; ------------------------------------------------------- 注:除Microsoft Visual C++外,你需要另外安装 Microsoft Platform SDK,并把SDK安装目录中的 include目录和lib目录分别放置在VC开发环境选项 (对于VC6来说,是菜单中Tools->Options...弹出的 对话框中的Directories页)中的目录(include) 和库(lib)中VC++的路径之前才能够正确编译链接运 行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值