问题标签 [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.
pkcs#11 - 如何通过 SUNPKCS 提供商从 hsm 获取 al 别名?
我想从 hsm 获取我的所有关键别名,但我收到此错误消息:
如果我在 hsm 上只创建一个密钥。没有问题,我可以从 hsm 获取别名,但如果我有 2 个或更多,我会收到错误消息。如何解决?
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
我收到错误
你能帮忙吗?
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 提供程序。
- 是否可以将 Sunpkcs11 提供程序与 AWS CloudHSM 结合使用,或者在这方面我是否仅限于 Cavium 提供程序?
- 如果使用 Sunpkcs11 提供程序,与 Cavium 提供程序相比有什么缺点吗?
java - Sun PKCS11 库 C_Encrypt 和 C_Decrypt 更改
到目前为止,我一直在顺利使用Sun PKCS11 Wrapper 的C_Encrypt和C_Decrypt方法。它是;
但是从 Ubuntu 16.04 升级到 18.04 后,我的 Java 更新到了 1.8.0_275 版本。现在它需要 9 个参数;
我在网上找不到任何关于如何使用新包装函数的文档。任何帮助,将不胜感激。谢谢。
java - 使用 softhsm 配置 SunPKCS11 时出现 CKR_GENERAL_ERROR
使用 softhsm 配置 SunPKCS11 时出现 CKR_GENERAL_ERROR。
平台:
- 窗口 10 64 位
- OpenJDK 11.0.2
- https://github.com/disig/SoftHSM2-for-Windows/releases/download/v2.5.0/SoftHSM2-2.5.0.msi
环境变量:
虚拟机参数:
Java代码:
控制台输出:
softhsm2-util.exe:
在此之前,我尝试过使用pkcs11-mock。提供程序已成功配置,但在执行 keystore.load() 时它永远不会结束。
提前致谢!
java - SunPKCS11 正在删除重复的密钥条目
我正在使用 SunPKCS11 安全提供程序使用该方法将密钥条目(证书 + 私钥)存储到 nShield HSM 中,setKeyEntry
但是当我存储具有不同别名的相同证书时,第一个证书将从 de HSM 中删除。我也用软 HSM 进行了测试,但我得到了相同的行为。
我在PKCS#11 参考指南中找到了这个,但我没有存储 CA 证书,它们是用户证书:
“如果令牌中已经有 CA 证书,则不会存储副本。”
是否可以使用 SunPKCS11 安全提供程序存储具有不同别名的相同证书(和私钥)?
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 无法安装和公开:是否可以实现我们自己的提供程序来获得解决方法,或者可以存在更好的方法来让它工作?
对不起我的英语,我不是本地人。感谢那些来到这里阅读并回答的人。