首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HSM通过SunPKCS11在命令行上工作,在Tomcat托管的webapp中失败。

HSM通过SunPKCS11在命令行上工作,在Tomcat托管的webapp中失败。
EN

Stack Overflow用户
提问于 2017-05-03 01:13:24
回答 1查看 505关注 0票数 0

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

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

然而,在Tomcat下,SunPKCS11构造函数抛出消息“初始化失败”的ProviderException。到目前为止,我已经将其调试到C_GetSlotInfo返回CKR_GENERAL_ERROR;它变成了一个PKCS11Exception (没有更多的细节),并且被包装在ProviderException中。

插槽号是正确的- NitroKey只有一个插槽,所以这个数字是0。除了应用程序本身之外,我没有遇到通过PKCS#11 (或者通过PKCS#11)使用HSM和keytool、PKCS#11等的问题。只有在Tomcat的统治下才会失败。

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

我将获取JDK源代码并在C_GetSlotInfo中进行进一步调试,并尝试其他一些实验,例如生成带有适当选项的密钥工具,以查看它是否可以与卡对话。但如果有人有其他建议的话,我很高兴听到。

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

代码语言:javascript
复制
# 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还没有看到任何其他细节,例如密钥容器名称或HSM。如果构造函数没有抛出异常,这些参数将在稍后出现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-03 14:25:08

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43749526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档