gpt4 book ai didi

java - 通过 SunPKCS11 的 HSM 在命令行上工作,在 Tomcat 托管的 Web 应用程序中失败

转载 作者:行者123 更新时间:2023-11-28 23:21:04 26 4
gpt4 key购买 nike

我有一个应用程序在 Tomcat 9 下运行,使用 JDK 1.8.0_111 作为运行时,在 Windows 7 x64 上,它试图通过 SunPKCS11 CSP 和 OpenSC 驱动程序使用 NitroKey HSM。

这在命令行中运行良好,包括在与 Tomcat 服务使用相同帐户下运行的 shell。

然而,在 Tomcat 下,SunPKCS11 构造函数会抛出 ProviderException 并显示消息“初始化失败”。到目前为止,我已经调试到 C_GetSlotInfo 返回 CKR_GENERAL_ERROR;成为 PKCS11Exception(没有进一步的细节)并被包装在 ProviderException 中。

插槽编号正确 - NitroKey 只有一个插槽,因此编号为 0。除了应用程序本身,我通过 PKCS#11 使用 HSM 和 keytool、OpenSSL 等没有问题。 (或者通过 CAPI,就此而言。)它只在 Tomcat 下失败。

有什么想法吗?如果 HSM(或智能卡)已被移除并重新插入,其他一些人已经发布了关于此类故障的查询 - 例如参见 remove and insert smartcard using sunpkcs#11 and tomcat - 但这里不是这种情况。该 token 尚未删除,其他所有内容均可访问。但这些问题意味着在 Tomcat 下使用 SunPKCS11 和 OpenSC 没有固有的限制。

我将获取 JDK 源代码并进一步调试到 C_GetSlotInfo 中,并尝试一些其他实验,例如使用适当的选项生成 keytool 以查看它是否可以与卡通信。但如果有人有任何其他建议,我会很高兴听到他们。

以防万一有人需要详细信息:我使用一个参数调用 SunPKCS11 构造函数,即配置文件的路径。它正在成功读取文件(如果文件路径是伪造的或文件不可读,我会得到一个不同的异常)。该文件非常简单:

# PKCS#11 configuration file for Java to use NitroKey in slot 0 on Windows
name = NitroKey
library = c:/Windows/System32/opensc-pkcs11.dll
slotListIndex = 0

在故障点,SunPKCS11 尚未看到任何其他详细信息,例如 key 容器名称或 HSM PIN。如果构造函数没有抛出异常,这些将稍后出现。

最佳答案

包括我在内的一些用户encountered similar problem在 Microsoft IIS 应用程序服务器上。将用户帐户更改为 LocalSystem 或 LocalService 通常有助于解决问题。

关于java - 通过 SunPKCS11 的 HSM 在命令行上工作,在 Tomcat 托管的 Web 应用程序中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43749526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com