SSL VPN 【SSL】虚拟机中EC使用usb-key无法认证_问题分析

【SSL】虚拟机中EC使用usb-key无法认证_问题分析

更新时间:2023-06-13 23:30:49
Windows虚拟机使用easyconnect客户端出现“请插入有效的USB-KEY”报错,之前一直是好的,最近也没做策略变更。
1.登录客户SSL VPN设备,查看并记录已经配置的动态链接库路径如下,如下:
%homedrive%\Program Files (x86)\BJCAClient\CertAppEnvV2.15.01.1445\Driver\x86\EsecuKey_KGM_API_sheca.dll
%homedrive%\Program Files (x86)\BJCAClient\CertAppEnvV2.15.01.1445\Driver\x86\EsecuDrv04_sheca.dll
%homedrive%\Program Files (x86)\BJCAClient\CertAppEnvV2.15.01.1445\Driver\x64\EsecuKey_KGM_API_sheca_x64.dll
%homedrive%\Program Files (x86)\BJCAClient\CertAppEnvV2.15.01.1445\Driver\x64\EsecuDrv04_sheca_x64.dll
%systemroot%\sysWOW64\shca_1ea8.dll
%homedrive%\BJCAClient\CertAppEnvV2.15.01.1445\Driver\x86\EsecuKey_KGM_API_sheca.dll
%homedrive%\BJCAClient\CertAppEnvV2.15.01.1445\BjcaCertAide\libscpb_yzt.dll
%homedrive%\BJCAClient\CertAppEnvV2.15.01.1445\Driver\x86\EsecuDrv04_sheca.dll
%homedrive%\BJCAClient\CertAppEnvV2.15.01.1445\BjcaCertAide\DuiLib_u.dll
%homedrive%\BJCAClient\CertAppEnvV2.15.01.1445\BjcaCertAide\MsgNoticeBusiness.dll
%homedrive%\BJCAClient\CertAppEnvV2.15.01.1445\BjcaCertAide\XTXLogLib.dll
%homedrive%\BJCAClient\CertAppEnvV2.15.01.1445\BjcaCertAide\ZLibWrap.dll

2. 发现动态链接库路径中包含版本信息(V2.15.01.1445),若客户自行更新驱动程序,有可能导致之前配置的路径失效;

3. 咨询得知客户使用的数字证书发放单位为上海市数字证书认证中心,该国内数字证书支持使用北京证书中心或者上海的协卡助手驱动软件;

4. 决定使用协卡助手软件,安装新的key驱动,登录上海市数字证书认证中心https://www.sheca.com/resources/tools,下载新的驱动软件“协卡助手”进行安装,安装后插上USB-KEY并检测驱动正常,下载界面如下图:

5. 使用工具ProcessExplorer查看协卡助手运行时调用了哪些dll动态链接库

6. 插上USB-KEY,启动协卡助手和ProcessExplorer,点击view--->Lower Pane View,勾选DLLs,表示查看软件运行时依赖的dll文件,这里我们选择协卡助手客户端“UniClient.exe”;
选择按“Company Name”排序dll,暂时忽略Sangfor Technologies以及Microsoft的,如下:


将dll文件完整地梳理出来,有些dll文件分为32位和64位版本,也都梳理出来,以“EsecuAPI_sheca.dll”为例,在不同的路径下存在同名文件,可使用工具everything(下载地址:http://www.voidtools.com/)搜索一下,找出不同路径下的同名dll文件。

完整地把所有dll文件梳理出来,如下:

C:\Windows\SysWOW64\ecc_readcert.dll
C:\Windows\SysWOW64\ecc_se.dll
C:\Windows\SysWOW64\SESeal.dll
C:\Windows\SysWOW64\ReadCert.dll
C:\Windows\SysWOW64\SafeEngine.dll
C:\Windows\System32\EsecuAPI_sheca.dll
C:\Windows\SysWOW64\EsecuAPI_sheca.dll
C:\Windows\System32\EsecuKey_KGM_API_sheca.dll
C:\Windows\SysWOW64\EsecuKey_KGM_API_sheca.dll
C:\Windows\System32\EsecuDrv04_sheca.dll
C:\Windows\SysWOW64\EsecuDrv04_sheca.dll
C:\Windows\System32\shca_1ea8.dll
C:\Windows\SysWOW64\shca_1ea8.dll
C:\Program Files (x86)\Sheca\UniClient\DuiLib.dll
C:\Program Files (x86)\Sheca\UniClient\SSK_Service.dll

7.将上述dll路径重新填写到SSL VPN的动态链接库路径中,PC插上USB-KEY,启动easyconnect客户端,不再出现红色报错,输入PIN码******后,认证成功。

客户私自更新证书驱动软件,导致之前添加的数字证书dll路径失效,导致认证失败
将dll路径重新填写到SSL VPN的动态链接库路径中,PC插上USB-KEY,启动EC客户端认证成功。向客户说明,不要私自随意更新证书驱动软件,更新驱动需要重新添加新的dll路径。
查询USB设备的PID:VID,可以使用芯片精灵ChipGenius;查询程序所依赖的动态链接库可以使用ProcessExplorer,英文不好可以使用汉化版。
因为dll路径有条目限制(只能加入15条),所以下面三条先不加入(公共dll文件),若测试正常则不需要加。
C:\Windows\SysWOW64\libeay32_sheca_0_9_8.dll  //是OpenSSL所用动态链接库
C:\Windows\SysWOW64\libeay32_sheca_1_0_0d.dll  //是OpenSSL所用动态链接库
C:\Program Files (x86)\Sheca\UniClient\libcurl.dll   //是curl相关动态链接库