具体实施方式
为了简化现有技术中进行多个数字证书下载时烦琐的流程,以及提高工作效率,本发明实施例提供了一种远程制证的方法、服务器及系统。下面结合附图对本发明实施例远程制证的方法、服务器及系统进行详细描述。
实施例一:
本发明实施例中,通过远端控制来启动本地设备进行一系列操作;其中,进行远程控制的方式可以是但不限于通过调用函数来实现。
本发明实施例提供的远程制证的方法中,首先,将本地设备与用户远程制证的服务器建立连接,然后进行以下步骤(如图1所示):
步骤101、通过调用函数使本地设备从与其连接的智能密钥设备中读取所述智能密钥设备的标识信息;
步骤102、通过调用函数使所述本地设备生成数字证书请求数据包并获得生成的所述数字证书请求数据包,所述数字证书请求数据包中包含有所述智能密钥设备的标识信息和所述智能密钥设备中空闲密钥对的公钥信息;
步骤103、根据所述数字证书请求数据包生成数字证书并下发给所述本地设备,所述数字证书包含有所述智能密钥设备的标识信息;
步骤104、通过调用函数使所述本地设备将所述数字证书写入与其包含的标识信息对应的智能密钥设备中。
本发明实施例提供的远程制证的方法,通过将数字证书与智能密钥设备进行绑定,数字证书中不需要包含用户信息,使得下载数字证书的过程中不再需要用户输入个人信息,因此整个数字证书的下载过程成为一个可以由智能密钥设备提供方来完成的、可自动实现的过程,不仅省却了用户自己下载数字证书时的烦琐过程,而且进一步地可以将原有的多个单一证书的下载流程简化成批量下载证书的流程,大大提高了工作效率。
实施例二:
参见图2,本实施例提供的是一种远程制证的方法,在本实施例中,智能密钥设备为USB Key,本地安全终端包含本地设备和多个USB Key;上述多个USBKey可以是直接插在本地设备的多个USB接口上,也可以是通过USB HUB与本地设备进行连接;并且本地设备通过安全中继从安全终端中向上述多个USBKey中下载数字证书。本地设备与安全中继预先约定双方互为信任方,安全中继将本地设备发送的任意请求都转发给安全终端。
在本实施例中,在所述安全中继、或者所述本地设备、或者一第三方服务器中存在一动态函数库(以下简称动态库),所述安全中继或者第三方服务器可以通过调用该动态库中的函数来控制所述本地设备执行相应的操作;本实施例中以动态库存在于安全中继中且由安全中继来对所述本地设备进行远程控制为例进行具体说明。
本发明实施例提供的制证方法中,首先将本地设备与安全中继建立连接,然后进行以下步骤:
步骤201、对操作者身份进行认证;如果认证成功,则进行步骤202;否则,向操作者提示出错;
其中,对操作者身份进行认证的方法包括但不限于以下方法:
验证操作者输入的PIN码是否合法;
验证操作者的生物特征是否合法;
验证操作者提供的权限验证设备中是否包含合法数据;
验证操作者提供的权限验证设备是否具有合法的硬件序列号;
将一些数据发送给权限验证设备进行运算,检查运算结果是否合法;
若验证结果为合法数据,则认证成功;否则,认证失败;
其中,所述权限验证设备可以为USB Key或智能卡。
步骤202、本地设备进行本机初始化操作,以激活本地设备中的各个模块从而使本地设备能够正常工作;
步骤203、本地设备在与安全中继建立连接后,向安全中继发送注册请求;
步骤204、安全中继通过调用动态库中的函数L_SendGenP10InitCode()命令本地设备准备生成P10请求数据包;
步骤205本地设备检查USB Key是否与本地设备建立连接,若已建立连接,则执行步骤206;否则,向操作者提示出错;
步骤206、本地设备对USB Key进行验证,以确认所述USB Key是否可用于数字证书下载;若验证成功,则执行步骤207;否则,向操作者提示出错信息;
在本实施例中,本地设备对USB Key进行验证的方法包括但不限于以下方法:
本地设备将内部存储的PIN码发送给USB Key,USB Key比较接收到的PIN码与自身内置的PIN码是否一致;若一致,则验证成功;若不一致,则验证失败;
本地设备用内置的算法对USB Key的标识信息进行计算,得到PIN码并发送给USB Key,并且USB Key用内置的算法对标识信息进行计算得到PIN码,再比较计算得到的PIN码与接收到的PIN码是否相同;若相同,则验证成功;若不相同,则验证失败;
在本实施例中,USB Key的标识信息可以是但不限于是USB Key的硬件序列号。
步骤207、本地设备从所有与本机连接的USB Key中选择一个USB Key,与其建立通信过程,并查找上述USB Key中是否存在空闲密钥对;若不存在,则执行步骤208;若存在,则执行步骤209。
在本实施例中,所述空闲密钥对指的是没有数字证书与其匹配的密钥对。
在本实施例中,USB Key中可以存在多个密钥对,相应地,也可以存在多个与所述密钥对相匹配的证书,证书之间不相互覆盖。
步骤208、USB Key根据内置的密钥生成算法产生密钥对;
步骤209、本地设备读取该USB Key的标识信息;
步骤210、本地设备与上述USB Key根据预先设定的规则产生P10请求数据包,并将所述P10请求数据包发送给安全中继。
在本实施例中,所述预先设定的规则是:本地设备先读取上述USB Key中空闲密钥对中的公钥信息,再生成一个包含有所述空闲密钥对中的公钥信息、智能密钥设备的标识信息以及证书的用途信息的数据包,并将该数据包发给USB Key,所述USB Key用其中的空闲密钥对中的私钥对所述数据包进行签名,并将对所述数据包进行签名后的签名值发送给本地设备,本地设备再将上述数据包、签名算法标识以及签名后的签名值组合成一个P10请求数据包。
在本实施例中,P10请求数据包中包含三部分内容:数据包、用空闲密钥对中的私钥对所述数据包进行签名后的签名值以及签名算法标识;所述数据包包括:密钥对中的公钥信息、USB Key的标识信息以及证书的用途信息等各种信息;在本发明实施例中的P10请求数据包不包含用户信息。
步骤211、安全中继将接收到的P10请求数据包发送给安全终端;
步骤212、安全终端接收P10请求数据包,并用P10请求数据包中的公钥对签名值进行验证;若验证成功,则执行步骤213;否则,向操作者提示出错信息;
步骤213、安全终端根据P10请求数据包中的数据信息生成数字证书,并将所述数字证书发送给安全中继;
在本实施例步骤213中,安全终端生成的证书中不包含有用户信息,但包含有USB Key的标识信息。
步骤214、安全中继将接收到数字证书发送给本地设备;
步骤215、安全中继通过调用动态库中的函数使本地设备获取安全终端的公钥,并通过调用动态库中的函数L_Verify()使本地设备用所述安全终端的公钥对所述数字证书进行验证;
在本实施例中,安全中继通过调用动态库中的函数使本地设备获取安全终端的公钥的方法可以是:
安全中继通过调用动态库中的函数L_GetCAPubKeyFromDev()使本地设备预先从安全终端中获取安全终端的公钥;
安全中继通过调用动态库中的函数L_GetCAPubKeyFromCert()使本地设备在接收到签名后的证书后,从安全终端的根证书中获取安全终端的公钥。
相应地,安全终端的根证书还可以放在安全中继中,则安全中继通过调用动态库中的函数使本地设备从存放在安全中继的根证书中获取公钥。
步骤216、安全中继通过调用动态库中的函数L_WriteCertToKey()使本地设备将验证成功后的数字证书写入与其携带的标识信息对应的USB Key中;如果证书写入失败,则向操作者提示失败信息,如果证书写入成功,则向操作者提示成功信息;
在本实施例步骤216中,向操作者提示失败信息或成功信息的方法包括但不限于以下方法:
安全中继通过调用动态库中的函数SoundInfomation()使本地设备通过语音发声的方法向操作者提示失败信息或成功信息;或,
安全中继通过调用动态库中的函数MsgInfomation()使本地设备通过弹出对话框的方法向操作者提示失败信息或成功信息;或,
安全中继通过调用动态库中的函数USBKeyMsgSound()使写入证书失败的USB Key通过语音发声的方法向操作者提示失败信息或成功信息;或,
安全中继通过调用动态库中的函数USBKeyMsgInfomation()使写入证书失败的USB Key通过显示对话框的方法向操作者提示失败信息或成功信息。
如果所述本地设备上连接有至少两个USB Key,则还需要进行以下步骤:
步骤217、安全中继通过调用动态库中的函数使本地设备与当前通信的USBKey断开连接,并与一个新的智能密钥设备建立通信连接,再重复进行制证过程。
在本实施例中,步骤211至步骤212还可以通过如下步骤来实现:
步骤211′、安全中继接收P10请求数据包后,对所述P10请求数据包进行验证;若验证成功,则执行步骤212′;否则,向操作者提示出错;
在本实施例步骤211′中,对P10请求数据包进行验证的方法可以是但不限于以下方法:
安全中继用上述P10请求数据包中携带的公钥对该P10请求数据包中的签名值进行验证;
安全中继对上述P10请求数据包中的携带的USB Key的标识信息进行判断,判断上述USB Key的标识信息是否在合法的范围,若是,则验证成功,若不是,则验证失败;
其中,合法的范围是指本地设备与安全中继预先约定USB Key的标识信息的范围。
步骤212′、安全中继将验证成功后的P10请求数据包发送给安全终端。
如果所述本地设备上连接有至少两个USB Key,那么还可以通过调用动态库中的函数使本地设备依次读取所述至少两个USB Key中的标识信息,然后根据所述标识信息生成至少两个数字证书请求数据包并将其一并发送给安全终端,在所述数字证书请求数据包中包含有USB Key的标识信息而不包含用户信息;所述安全终端在接收到所述数字证书请求数据包后根据其中包含的数据生成至少两个数字证书并将所述至少两个数字证书一并下发给所述本地设备,所述数字证书包含有USB Key的标识信息而不包含用户信息;然后,通过调用动态库中的函数使本地设备将所述至少两个数字证书分别写入与其携带的标识信息相对应的智能密钥设备中。
本发明实施例提供的远程制证的方法,通过将数字证书与智能密钥设备进行绑定,数字证书中不需要包含用户信息,使得下载数字证书的过程中不再需要用户输入个人信息,因此整个数字证书的下载过程成为一个可以由智能密钥设备提供方来完成的、可自动实现的过程,不仅省却了用户自己下载数字证书时的烦琐过程,而且进一步地可以将原有的多个单一证书的下载流程简化成批量下载证书的流程,大大提高了工作效率。
实施例三:
参见图3,本实施例提供的是一种远程制证的方法,在本实施例中,智能密钥设备为USB Key,本地安全终端包含本地设备和多个USB Key;上述多个USBKey可以是直接插在本地设备的多个USB接口上,也可以是通过USB HUB与本地设备进行连接,在本实施例中,所述本地设备为可用于数字证书下载的设备(例如PC机)。在本实施例中,本地设备与安全终端预先约定双方互为信任方。
在本实施例中,在所述安全终端、或者所述本地设备、或者一第三方服务器中存在一动态函数库(以下简称动态库),所述安全终端或者所述第三方服务器可以通过调用该动态库中的函数来控制所述本地设备执行相应的操作。本实施例中引入一证书服务器,安全终端将生成的证书放在证书服务器上,本地设备再从证书服务器上下载证书到多个USB Key中。本实施例中以动态库存在于安全终端中且由安全终端来完成对所述本地设备的远端控制为例进行具体说明。
本发明实施例提供的制证方法中,首先将本地设备与安全终端建立连接,然后进行以下步骤:
步骤301、对操作者身份进行认证;如果认证成功,则进行步骤302;否则,向操作者提示出错;
其中,对操作者身份进行认证的方法包括但不限于以下方法:
验证操作者输入的PIN码是否合法;
验证操作者的生物特征是否合法;
验证操作者提供的权限验证设备中是否包含合法数据;
验证操作者提供的权限验证设备是否具有合法的硬件序列号;
将一些数据发送给权限验证设备进行运算,检查运算结果是否合法;
若验证结果为合法数据,则认证成功;否则,认证失败;
其中,所述权限验证设备可以为USB Key或智能卡。
步骤302、本地设备进行本机初始化操作,以激活本地设备中的各个模块从而使本地设备能够正常工作;
步骤303、本地设备在与安全终端建立连接后,向安全终端发送注册请求;
步骤304、安全终端通过调用动态库中的函数L_SendGenP10InitCode()命令本地设备准备生成P10请求数据包;
步骤305、本地设备检查USB Key是否与本地设备建立连接,若已建立连接,则执行步骤306;否则,向操作者提示出错;
步骤306、本地设备对USB Key进行验证,以确认所述USB Key是否可用于数字证书下载;若验证成功,则执行步骤307;否则,向操作者提示出错;
在本实施例中,本地设备对USB Key进行验证的方法包括但不限于以下方法:
本地设备将内部存储的PIN码发送给USB Key,USB Key比较接收到的PIN码与自身内置的PIN码是否一致;若一致,则验证成功;若不一致,则验证失败;
本地设备用内置的算法对USB Key的标识信息进行计算,得到PIN码并发送给USB Key,并且USB Key用内置的算法对标识信息进行计算得到PIN码,再比较计算得到的PIN码与接收到的PIN码是否相同;若相同,则验证成功;若不相同,则验证失败;
在本实施例中,USB Key的标识信息可以是但不限于是USB Key的硬件序列号。
步骤307、安全终端调用动态库中的函数L_FindKeyPair()并根据函数L_FindKeyPair()的返回值判断与本地设备连接的USB Key中是否都存在空闲密钥对;若不存在,则执行步骤308;若存在,则执行步骤309;
在本实施例中,所述空闲密钥对指的是没有数字证书与其匹配的密钥对。
在本实施例中,USB Key中可以存在多个密钥对,相应地,也可以存在多个与所述密钥对相匹配的证书,证书之间不相互覆盖。
步骤308、安全终端通过调用动态库中的函数L_SendGenKeyPairCode()使USB Key根据内置的密钥生成算法产生密钥对;
步骤309、安全终端调用动态库中的函数L_GetUSBKeyInfo()从与本地设备连接的USB Key中读取USB Key的标识信息;
步骤310、安全终端通过调用动态库中的函数L_SendGenP10Code()使本地设备与USB Key都按照预先设定的规则,产生一个P10请求数据包,并将该P10请求数据包发送给安全终端;
在本实施例中,所述预先设定的规则是:本地设备先读取上述USB Key中空闲密钥对的公钥信息,再生成一个包含有所述空闲密钥对中的公钥信息、智能密钥设备的标识信息以及证书的用途信息的数据包,并将该数据包发给USBKey,所述USB Key用其中的空闲密钥对中的私钥对所述数据包进行签名,并将对所述数据包进行签名后的签名值发送给本地设备,本地设备再将上述数据包、签名算法标识以及签名后的签名值组合成一个P10请求数据包;
在本实施例中,P10请求数据包中包含三部分内容:数据包、用空闲密钥对中的私钥对所述数据包进行签名后的签名值以及签名算法标识;所述数据包包括:密钥对中的公钥信息、USB Key的标识信息以及证书的用途信息等各种信息;在本发明实施例中的P10请求数据包不包含用户信息。
步骤311、安全终端接收所述P10请求数据包,并用P10请求数据包中的公钥对签名值进行验证;若验证成功,则执行步骤312;否则,向操作者提示出错;
步骤312、安全终端根据P10请求数据包中的数据信息生成数字证书,并将所述数字证书发送给证书服务器;
在本实施例步骤312中,安全终端生成的证书中不包含有用户信息,但包含有USB Key的标识信息。
步骤313、安全终端通过调用动态库中的函数L_SendDownCertCode()使本地设备从证书服务器上获取所述数字证书;
步骤314、安全终端通过调用动态库中的函数使本地设备获取安全终端的公钥,并且安全终端通过调用动态库中的函数L_Verify()使本地设备用所述安全终端的公钥对所述数字证书进行验证;
在本实施例中,安全终端通过调用动态库中的函数使本地设备获取安全终端的公钥的方法可以是但不限于:
安全终端通过调用动态库中的函数L_GetCAPubKeyFromDev()使本地设备预先从安全终端中获取安全终端的公钥;
安全终端通过调用动态库中的函数L_GetCAPubKeyFromCert()使本地设备在接收到签名后的证书后,从安全终端的根证书中获取安全终端的公钥。
相应地,安全终端的根证书还可以放在安全中继中,则安全中继通过调用动态库中的函数使本地设备从存放在安全中继的根证书中获取公钥。
步骤315、安全终端通过调用动态库中的函数L_WriteCertToKey()使本地设备将验证成功后的数字证书写入与其携带的标识信息对应的USB Key中;如果证书写入失败,则向操作者提示失败信息,如果证书写入成功,则向操作都提示成功信息;
在本实施例步骤315中,向操作者提示失败信息或成功信息的方法包括但不限于以下方法:
安全终端通过调用动态库中的函数L_SoundInfomation()使本地设备通过语音发声的方法向操作者提示失败信息或成功信息;
安全终端通过调用动态库中的函数L_MsgInfomation()使本地设备通过弹出对话框的方法向操作者提示失败信息或成功信息;
安全终端通过调用动态库中的函数L_USBKeyMsgSound()使写入证书失败的USB Key通过语音发声的方法向操作者提示失败信息或成功信息;
安全终端通过调用动态库中的函数L_USBKeyMsgInfomation()使写入证书失败的USB Key通过显示对话框的方法向操作者提示失败信息或成功信息。
如果所述本地设备上连接有至少两个USB Key,则还需要进行以下步骤:
步骤316、安全中继通过调用动态库中的函数使本地设备与当前通信的USBKey断开连接,并与一个新的智能密钥设备建立通信连接,再重复进行制证过程。
如果所述本地设备上连接有至少两个USB Key,那么还可以通过调用动态库中的函数使本地设备依次读取所述至少两个USB Key中的标识信息,然后根据所述标识信息生成至少两个数字证书请求数据包并将其一并发送给安全终端,在所述数字证书请求数据包中包含有USB Key的标识信息而不包含用户信息;所述安全终端在接收到所述数字证书请求数据包后根据其中包含的数据生成至少两个数字证书并将所述至少两个数字证书一并下发给所述本地设备,所述数字证书包含有USB Key的标识信息而不包含用户信息;然后,通过调用动态库中的函数使本地设备将所述至少两个数字证书分别写入与其携带的标识信息相对应的智能密钥设备中。
本发明实施例提供的远程制证的方法,通过将数字证书与智能密钥设备进行绑定,数字证书中不需要包含用户信息,使得下载数字证书的过程中不再需要用户输入个人信息,因此整个数字证书的下载过程成为一个可以由智能密钥设备提供方来完成的、可自动实现的过程,不仅省却了用户自己下载数字证书时的烦琐过程,而且进一步地可以将原有的多个单一证书的下载流程简化成批量下载证书的流程,大大提高了工作效率。
实施例四:
如图4所示,本发明实施例提供一种用于远程制证的服务器,包括读取控制模块401、请求控制模块402、发送控制模块403、生成模块404以及写入控制模块405;其中,
读取控制模块401,用于命令本地设备从与其连接的智能密钥设备中读取所述智能密钥设备的标识信息;
请求控制模块402,用于命令本地设备生成数字证书请求数据包,所述数字证书请求数据包中包含有所述智能密钥设备的标识信息和所述智能密钥设备中的空闲密钥对的公钥;
发送控制模块403,用于命令本地设备将生成的所述数字证书请求数据包发送给用于远程制证的服务器;
生成模块404,用于根据所述数字证书请求数据包生成数字证书并下发给所述本地设备,所述数字证书包含有所述智能密钥设备的标识信息;
写入控制模块405,用于命令本地设备将所述数字证书写入与其包含的标识信息对应的智能密钥设备中。
其中,所述请求控制模块402具体包括:
读取单元4021,用于命令本地设备读取所述智能密钥设备中空闲密钥对的公钥信息;
生成单元4022,用于命令本地设备生成一个包含有所述空闲密钥对中的公钥信息、智能密钥设备的标识信息以及证书的用途信息的数据包;
发送单元4023,用于命令本地设备将生成的数据包发送给所述智能密钥设备;
签名单元4024,用于命令所述智能密钥设备利用其中的空闲密钥对中的私钥对所述数据包进行签名,然后将对所述数据包进行签名后的签名值发送给所述本地设备;
组合单元4025,用于命令所述本地设备将所述数据包、所述签名值以及签名算法标识组合成一个数字证书请求数据包。
本发明实施例提供的用于远程制证的服务器,还可以包括:
判断模块406,用于判断所述操作者是否具有进行数字证书下载的权限。
本发明实施例提供的用于远程制证的服务器,还可以包括:
注册模块407,用于与所述本地设备建立连接后,接收并处理所述本地设备发送的注册请求;
查找控制模块408,用于查找所述智能密钥设备中的空闲密钥对;
生成控制模块409,用于在所述智能密钥设备中不存在空闲密钥对时,命令所述智能密钥设备根据内置的密钥算法生成密钥对。
进一步地,本发明实施例提供的用于远程制证的服务器,还包括:
获取控制模块410,用于命令所述本地设备获取所述安全终端的密钥对的公钥;
验证控制模块411,用于命令所述本地设备利用所述公钥对所接收到的数字证书进行验证。
如果所述本地设备上连接有至少两个智能密钥设备,那么本发明实施例提供的用于远程制证的服务器还包括:
跳转控制模块412,用于命令所述本地设备断开与所述智能密钥设备之间的通信连接,并与一个新的智能密钥设备建立通信连接,再重复进行制证过程。
或者,如果所述本地设备上连接有至少两个智能密钥设备,那么本发明实施例中,所述请求控制模块402命令所述本地设备生成至少两个数字证书请求数据包,且每个数字证书请求数据包中对应地包含有所述至少两个智能密钥设备中一个智能密钥设备的标识信息;
相应地,所述发送控制模块403命令所述本地设备发送至少两个数字证书请求数据包;
所述生成模块404生成至少两个数字证书,且每个数字证书对应地包含有所述至少两个智能密钥设备中一个智能密钥设备的标识信息。
本发明实施例提供的用于远程制证的服务器,通过将数字证书与智能密钥设备进行绑定,数字证书中不需要包含用户信息,使得下载数字证书的过程中不再需要用户输入个人信息,因此整个数字证书的下载过程成为一个可以由智能密钥设备提供方来完成的、可自动实现的过程,不仅省却了用户自己下载数字证书时的烦琐过程,而且进一步地可以将原有的多个单一证书的下载流程简化成批量下载证书的流程,大大提高了工作效率。
实施例五:
参考图5,本发明实施例提供的远程制证的系统,包括用于远程制证的服务器501、本地设备502以及智能密钥设备503;其中,
所述用于远程制证的服务器501,命令所述本地设备读取与该本地设备连接的所述智能密钥设备中的标识信息、结合所述标识信息生成数字证书请求数据包并发起数字证书请求;根据接收到的所述数字证书请求数据包生成数字证书并将其下发给所述本地设备;命令所述本地设备将所述数字证书写入到所述智能密钥设备中;
其中,所述数字证书请求数据包和所述数字证书中均包含有所述智能密钥设备的标识信息而不包含用户信息。
在实际应用中,本发明实施例提供的制证系统中的用于远程制证的服务器501,可以是但不限于:
所述用于远程制证的服务器包括安全终端、安全中继,此时通过安全中继调用函数来控制本地设备的操作;或者,
所述用于远程制证的服务器包括安全终端、安全中继和第三方服务器,此时通过安全中继或者第三方服务器调用函数来控制本地设备的操作;或者,
所述用于远程制证的服务器包括安全终端、证书服务器,此时通过安全终端调用函数来控制本地设备的操作;或者,
所述用于远程制证的服务器包括安全终端、证书服务器和第三方服务器,此时通过安全终端或者第三方服务器调用函数来控制本地设备的操作。
本发明实施例提供的远程制证的系统,通过将数字证书与智能密钥设备进行绑定,数字证书中不需要包含用户信息,使得下载数字证书的过程中不再需要用户输入个人信息,因此整个数字证书的下载过程成为一个可以由智能密钥设备提供方来完成的、可自动实现的过程,不仅省却了用户自己下载数字证书时的烦琐过程,而且进一步地可以将原有的多个单一证书的下载流程简化成批量下载证书的流程,大大提高了工作效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。