我想在 java 中使用 pkcs11 令牌。因此,我使用“IAIK”作为 pkcs11 java 包装器。我可以搜索密钥和证书等对象,但找不到哪个密钥属于哪个证书。我使用“CryptoKi Manager”搜索令牌中的对象,它显示了证书和密钥之间的连接,如下图所示。然后我研究了PKCS11标准,它说有一个名为“certId”的字段声明了这个连接,但我在“IAIK”中找不到它。“IAIK”是否在其证书对象中支持此功能?如何?
问问题
536 次
1 回答
2
此连接是通过CKA_ID
属性,引用 PKCS#11 版本 2.20:
CKA_ID 字段旨在区分多个键。在公钥和私钥的情况下,该字段协助处理同一主体持有的多个密钥;公钥的密钥标识符与其对应的私钥应该相同。密钥标识符也应该与相应证书的相同(如果存在)。然而,Cryptoki 并不强制执行这些关联。(有关进一步的评论,请参见第 10.6 节。)
请注意,这种关联不是强制执行的(YMMV),但理智的实现会以这种方式运行。
在 PKCS#11 包装器中使用Key.getId()和X509PublicKeyCertificate.getID()方法。
使用 IAIK-provider(请注意,您需要许可证)使用IAIKPKCS11Key.getKeyID()来配对公钥和私钥对象。我不知道如何CKA_ID
从TokenKeyStore获得的证书中获取价值。
祝你好运!
于 2019-06-30T16:06:47.097 回答