问题标签 [sunpkcs11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
533 浏览

pkcs#11 - 如何通过 SUNPKCS 提供商从 hsm 获取 al 别名?

我想从 hsm 获取我的所有关键别名,但我收到此错误消息:

如果我在 hsm 上只创建一个密钥。没有问题,我可以从 hsm 获取别名,但如果我有 2 个或更多,我会收到错误消息。如何解决?

0 投票
0 回答
570 浏览

keytool - 出现错误 java.security.KeyStoreException: PKCS11 not found while using softhsm as hsm

我正在使用命令行工具“keytool”在 softhsm 中创建密钥对。我在 java.security 中添加了 security.provider。

我的 pkcs11.cfg 看起来像

运行时 keytool.exe -keystore NONE -storetype PKCS11 -list

我收到错误

你能帮忙吗?

0 投票
0 回答
254 浏览

java - Sunpkcs11 提供程序是否与 AWS CloudHSM 兼容?

我正在尝试使用 HSM(硬件安全模块)来存储密钥并进行加密操作。我想在 java 应用程序中操作 HSM。为此,我需要使用兼容的 java JCE 提供程序作为应用程序和 HSM 的标准化 PKCS#11 接口之间的映射层。为了初步了解,我已经将 Utimaco Cryptoserver Simulator 与 Sunpkcs11 提供程序结合使用。结果很好!

但现在我想用 AWS CloudHSM 替换 Utimaco Cryptoserver Simulator,但我对此有点困惑。常见问题解答指出 AWS CloudHSM 提供 JCE (com.cavium.provider.caviumprovider)。但我想为此使用 Sunpkcs11 提供程序。

  1. 是否可以将 Sunpkcs11 提供程序与 AWS CloudHSM 结合使用,或者在这方面我是否仅限于 Cavium 提供程序?
  2. 如果使用 Sunpkcs11 提供程序,与 Cavium 提供程序相比有什么缺点吗?
0 投票
1 回答
93 浏览

java - Sun PKCS11 库 C_Encrypt 和 C_Decrypt 更改

到目前为止,我一直在顺利使用Sun PKCS11 Wrapper 的C_EncryptC_Decrypt方法。它是;

但是从 Ubuntu 16.04 升级到 18.04 后,我的 Java 更新到了 1.8.0_275 版本。现在它需要 9 个参数;

我在网上找不到任何关于如何使用新包装函数的文档。任何帮助,将不胜感激。谢谢。

0 投票
1 回答
601 浏览

java - 使用 softhsm 配置 SunPKCS11 时出现 CKR_GENERAL_ERROR

使用 softhsm 配置 SunPKCS11 时出现 CKR_GENERAL_ERROR。

平台:

环境变量:

虚拟机参数:

Java代码:

控制台输出:

softhsm2-util.exe:

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

提前致谢!

0 投票
0 回答
19 浏览

java - SunPKCS11 正在删除重复的密钥条目

我正在使用 SunPKCS11 安全提供程序使用该方法将密钥条目(证书 + 私钥)存储到 nShield HSM 中,setKeyEntry但是当我存储具有不同别名的相同证书时,第一个证书将从 de HSM 中删除。我也用软 HSM 进行了测试,但我得到了相同的行为。

我在PKCS#11 参考指南中找到了这个,但我没有存储 CA 证书,它们是用户证书:

“如果令牌中已经有 CA 证书,则不会存储副本。”

是否可以使用 SunPKCS11 安全提供程序存储具有不同别名的相同证书(和私钥)?

0 投票
1 回答
92 浏览

java - SunPKCS11 在没有 CKO_CERTIFICATE 的情况下针对 HSM 的使用

我的问题涉及在 Java (openjdk 11.0.12) 中使用 hsm。Hsm 应该用于签名目的,通过 SHA512 RSA 算法。以下很多句子我可能是错的,我是 HSM & co 的新手,所以我提前道歉。

据我了解,有三种方法:

1- 使用 SUNPKCS11 提供程序

2-使用供应商库(hsm 附带几个 jar,在我的情况下,nCipher 附带 nCipherKM.jar,它应该是供应商提供者。)

3- openssl(我们有一些 c 软件已经这样做了,我宁愿避免)

供应商库的使用真的很容易,至少在 Get info 调用之前,它会向 HardServer 发送一个未知参数,从而导致不可编组的异常。这很难调试,通信协议没有记录。现在我已经把这个解决方案放在一边。

无论如何,我更喜欢 SUNPKCS11 解决方案,它对我来说不是开箱即用的,但它易于调试和分析。并且应该是一个标准。

在这种情况下,我使用欧洲 DSS 库与 PKCS11Provider 进行交互,这让我的配置和实现变得更简单。

在 SunPKCS11 (vanilla) 初始化期间会出现此问题。

根据代码和 Oracle 文档,在某些时候它调用一个方法“P11Keystore.mapLabels()”,该方法匹配来自该插槽的所有私钥处理程序 (CKA_PRIVATE_KEY) 与证书处理程序 (CKO_CERTIFICATE),按顺序查找 cka_id 之间的匹配使用包含 CKA_LABEL 属性的别名映射在内存密钥库中构建软件。(私钥是不可提取的,所以访问是只读的https://docs.oracle.com/javase/8/docs/technotes/guides/security/p11guide.html#KeyStoreRestrictions

在签名初始化中,此私钥条目用于从 HSM(通过一些我没有的密钥属性)获取私钥处理程序。

问题是我的 hsm nCipher 没有为 CKO_CERTIFICATE 公开任何对象,因此匹配返回 0 结果并且我的软件密钥库为空。

当我尝试从密钥库中提取私钥处理程序时,我什么也得不到,也无法初始化 Signature 对象。

我的前任手动将私钥属性包装在本地 jks 中,并重写了一个新的提供程序,以便从文件而不是从 HSM/PKCS11 加载证书。

我不喜欢这个解决方案,我不希望我的应用程序根据 HSM 证书进行配置。处理这些密钥是 HSM 证书工作,而不是我的。

相反,我编写了另一个提供程序来直接从 CKA_PRIVATE_KEY 获取和使用私钥处理程序,使用预配置的 CKA_LABEL,绕过证书匹配。它有效。

但是我也不喜欢这种解决方案,这意味着标准协议的维护成本更高,并且每次都必须对 jar 进行签名,这对我来说很麻烦。

我觉得我从错误的角度来处理问题,也许是因为我在这件事上是个菜鸟。

解释已经结束,所以我的问题是:1-声称 CKO_CERTIFICATE 是 SunPKCS11 的先决条件我错了吗?1- HSM 可以/应该在没有恶意副作用的情况下公开 CKO_CERTIFICATE 对象吗?2- 这个丢失的对象是 nCipher HSM 的限制,还是可能是安装过程中丢失的配置?(即使没有它也可以工作,因此它是一个 Java 先决条件,而不是 HSM 缺失) 3- 如果 CKO_CERTIFICATE 无法安装和公开:是否可以实现我们自己的提供程序来获得解决方法,或者可以存在更好的方法来让它工作?

对不起我的英语,我不是本地人。感谢那些来到这里阅读并回答的人。