当前位置: 首页 > 知识库问答 >
问题:

CKR_GENERAL_ERROR时配置SunPKCS11与softhsm

司空俊雅
2023-03-14

我越来越CKR_GENERAL_ERROR配置SunPKCS11与softhsm时。

平台:

  • Winodows 10 64位
  • OpenJDK 11.0.2
  • https://github.com/disig/SoftHSM2-for-Windows/releases/download/v2.5.0/SoftHSM2-2.5.0.msi

环境变量:

PKCS11_LOGGER_FLAGS=16
PKCS11_LOGGER_LIBRARY_PATH=C:\SoftHSM2\lib\softhsm2-x64.dll

VM参数:

-Djava.security.debug=sunpkcs11

Java代码:

String aPKCS11LibraryFileName = "C:\\\\Development\\\\pkcs11-logger\\\\pkcs11-logger-x64.dll";

StringBuilder pkcs11Config = new StringBuilder();
pkcs11Config
    .append("name = token1")
    .append(NEW_LINE)
    .append("library = ")
    .append(DOUBLE_QUOTE)
    .append(aPKCS11LibraryFileName)
    .append(DOUBLE_QUOTE);

Provider provider = Security.getProvider("SunPKCS11");
Method configureMethod = provider.getClass().getMethod("configure", String.class);
provider = (Provider) configureMethod.invoke(provider, "--" + pkcs11Config.toString());
Security.addProvider(provider);

KeyStore keyStore = KeyStore.getInstance(SUN_PKCS11_KEYSTORE_TYPE, provider);
keyStore.load(null, "1234".toCharArray());

控制台输出:

SunPKCS11 loading --name = token1
library = "C:\\Development\\pkcs11-logger\\pkcs11-logger-x64.dll"
sunpkcs11: Initializing PKCS#11 library C:\Development\pkcs11-logger\pkcs11-logger-x64.dll
sunpkcs11: Multi-threaded initialization failed: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_GENERAL_ERROR
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at ar.gob.hcssf.isileg.tokengateway.PKCS11MockTest.start(PKCS11MockTest.java:51)
    at ar.gob.hcssf.isileg.tokengateway.PKCS11MockTest.main(PKCS11MockTest.java:29)
Caused by: java.security.ProviderException: Initialization failed
    at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:382)
    at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11$1.run(SunPKCS11.java:113)
    at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11$1.run(SunPKCS11.java:110)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11.configure(SunPKCS11.java:110)
    ... 6 more
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_GENERAL_ERROR
    at jdk.crypto.cryptoki/sun.security.pkcs11.wrapper.PKCS11.C_Initialize(Native Method)
    at jdk.crypto.cryptoki/sun.security.pkcs11.wrapper.PKCS11$SynchronizedPKCS11.C_Initialize(PKCS11.java:1549)
    at jdk.crypto.cryptoki/sun.security.pkcs11.wrapper.PKCS11.getInstance(PKCS11.java:160)
    at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:336)
    ... 10 more
0x000085a0 : 0x00007750 : ****************************** 2021-04-25 00:11:33 ***
0x000085a0 : 0x00007750 : PKCS11-LOGGER 2.2.0
0x000085a0 : 0x00007750 : PKCS#11 logging proxy module
0x000085a0 : 0x00007750 : Developed as a part of the Pkcs11Interop project
0x000085a0 : 0x00007750 : Please visit www.pkcs11interop.net for more information
0x000085a0 : 0x00007750 : ****************************** 2021-04-25 00:11:33 ***
0x000085a0 : 0x00007750 : Successfuly loaded C:\SoftHSM2\lib\softhsm2-x64.dll
0x000085a0 : 0x00007750 : Memory contents are dumped without endianness conversion
0x000085a0 : 0x00007750 : ****************************** 2021-04-25 00:11:33 ***
0x000085a0 : 0x00007750 : Calling C_GetFunctionList
0x000085a0 : 0x00007750 : Input
0x000085a0 : 0x00007750 :  ppFunctionList: 0000024C156047D8
0x000085a0 : 0x00007750 : Output
0x000085a0 : 0x00007750 :  Note: Returning function list of PKCS11-LOGGER
0x000085a0 : 0x00007750 : Returning 0 (CKR_OK)
0x000085a0 : 0x00007750 : ****************************** 2021-04-25 00:11:33 ***
0x000085a0 : 0x00007750 : Calling C_Initialize
0x000085a0 : 0x00007750 : Input
0x000085a0 : 0x00007750 :  pInitArgs: 0000024C152539C0
0x000085a0 : 0x00007750 :   CreateMutex: 0000000000000000
0x000085a0 : 0x00007750 :   DestroyMutex: 0000000000000000
0x000085a0 : 0x00007750 :   LockMutex: 0000000000000000
0x000085a0 : 0x00007750 :   UnlockMutex: 0000000000000000
0x000085a0 : 0x00007750 :   Flags: 2
0x000085a0 : 0x00007750 :    CKF_LIBRARY_CANT_CREATE_OS_THREADS: FALSE
0x000085a0 : 0x00007750 :    CKF_OS_LOCKING_OK: TRUE
0x000085a0 : 0x00007750 :   pReserved: 0000000000000000
0x000085a0 : 0x00007750 : Returning 5 (CKR_GENERAL_ERROR)
0x000085a0 : 0x00007750 : ****************************** 2021-04-25 00:11:33 ***
0x000085a0 : 0x00007750 : Calling C_GetFunctionList
0x000085a0 : 0x00007750 : Input
0x000085a0 : 0x00007750 :  ppFunctionList: 0000024C1562A7E8
0x000085a0 : 0x00007750 : Output
0x000085a0 : 0x00007750 :  Note: Returning function list of PKCS11-LOGGER
0x000085a0 : 0x00007750 : Returning 0 (CKR_OK)
0x000085a0 : 0x00007750 : ****************************** 2021-04-25 00:11:33 ***
0x000085a0 : 0x00007750 : Calling C_Initialize
0x000085a0 : 0x00007750 : Input
0x000085a0 : 0x00007750 :  pInitArgs: 0000000000000000
0x000085a0 : 0x00007750 : Returning 5 (CKR_GENERAL_ERROR)

softhsm2实用程序。exe文件:

C:\SoftHSM2\bin>softhsm2-util.exe --show-slots
Available slots:
Slot 1309549255
    Slot info:
        Description:      SoftHSM slot ID 0x4e0e22c7
        Manufacturer ID:  SoftHSM project
        Hardware version: 2.5
        Firmware version: 2.5
        Token present:    yes
    Token info:
        Manufacturer ID:  SoftHSM project
        Model:            SoftHSM v2
        Hardware version: 2.5
        Firmware version: 2.5
        Serial number:    48ed68114e0e22c7
        Initialized:      yes
        User PIN init.:   yes
        Label:            My token 2
Slot 2134878761
    Slot info:
        Description:      SoftHSM slot ID 0x7f3faa29
        Manufacturer ID:  SoftHSM project
        Hardware version: 2.5
        Firmware version: 2.5
        Token present:    yes
    Token info:
        Manufacturer ID:  SoftHSM project
        Model:            SoftHSM v2
        Hardware version: 2.5
        Firmware version: 2.5
        Serial number:    169a27c97f3faa29
        Initialized:      yes
        User PIN init.:   yes
        Label:            My token 1
Slot 2
    Slot info:
        Description:      SoftHSM slot ID 0x2
        Manufacturer ID:  SoftHSM project
        Hardware version: 2.5
        Firmware version: 2.5
        Token present:    yes
    Token info:
        Manufacturer ID:  SoftHSM project
        Model:            SoftHSM v2
        Hardware version: 2.5
        Firmware version: 2.5
        Serial number:
        Initialized:      no
        User PIN init.:   no
        Label:

C:\SoftHSM2\bin>

在此之前,我尝试过使用pkcs11-mock。提供程序配置成功,但在执行keystore.load()时它永远不会结束。

提前感谢!

共有1个答案

有凯泽
2023-03-14

只需在launcher中设置SOFTHSM2\u CONF环境变量,就可以成功配置提供程序,并且可以立即加载密钥库。

似乎没有得到系统环境变量。

 类似资料:
  • 有两个命令使用得最多了,从第一次调用 Git 到每天的日常微调及参考,这个两个命令就是: config 和 help 命令。 git config Git 做的很多工作都有一个默认方式。 对于绝大多数工作而言,你可以改变 Git 的默认方式,或者根据你的偏好来设置。 这些设置涵盖了所有的事,从告诉 Git 你的名字,到指定偏好的终端颜色,以及你使用的编辑器。 此命令会从几个特定的配置文件中读取和写

  • 我有一个对我的Rest Webservice的AJAX请求,带有一个自定义头“login”。 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64;RV:58.0)Gecko/20100101 Firefox/58.0 接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 接受语言:fr,f

  • 应用的源码是通过jenkins 从git 服务器上拉取到jenkins服务器上进行编译,所以我们需要让jenkins服务有对git服务的访问权限。 以下是介绍如何让jenkins有对gitlab和github的访问权限配置。 gitlab配置 登陆jenkins服务器 进入 cd ~/.ssh/ 找到 cat id_rsa.pub 如果没有请执行以下命令生成: $ ssh-keygen -o -t

  • 在新版本里,lua已可嵌入到remap.config里,支持更灵活的基于http header编程 ts-lua 接口文档https://github.com/portl4t/ts-lua 配置说明 Remap 可支持配置Lua Hook点的五个阶段 do_remap remap前阶段,该阶段可以修改存储key,拒绝服务等等操作 send_request 回源发送request 阶段,该阶

  • 本文向大家介绍Spring定时任务实现与配置(一),包括了Spring定时任务实现与配置(一)的使用技巧和注意事项,需要的朋友参考一下 朋友的项目中有点问题。他那边是Spring架构的,有一个比较简单的需要定时的任务执行。在了解了他的需求之后,于是提出了比较简单的Spring+quartz的实现方式。 注意本文只是讨论,在已搭建完毕的Spring工程下,完成最简单的定时任务。 第一步,要知道Spr

  • 问题内容: 在最近我从事的一些大型项目中,选择其中一种(XML或注释)似乎变得越来越重要。随着项目的发展,一致性对于可维护性非常重要。 我的问题是:与基于注释的配置相比,基于XML的配置有哪些优势?与基于XML的配置相比,基于注释的配置有哪些优势? 问题答案: 注释有其用途,但它们不是杀死XML配置的灵丹妙药。我建议将两者混合! 例如,如果使用Spring,则将XML用于应用程序的依赖注入部分是完