我想在Java中使用pkcs11令牌。因此,我使用“ IAIK”作为pkcs11 java包装器。我可以搜索诸如密钥和证书之类的对象,但是找不到哪个密钥属于哪个证书。我使用“ CryptoKi Manager”搜索令牌中的对象,它显示了证书和密钥之间的连接,如下图所示。然后我研究了PKCS11标准,它说有一个名为“ certId”的字段声明了此连接,但在“ IAIK”中找不到它。 “ IAIK”是否在其证书对象中支持此功能?怎么样?
答案 0 :(得分:2)
此连接通过CKA_ID
属性引用PKCS#11版本2.20:
CKA_ID字段旨在区分多个密钥。在公众的情况下 和私钥,此字段有助于处理同一主题持有的多个密钥;的 公钥及其对应的私钥的密钥标识符应相同。的 如果存在,则密钥标识符也应与相应证书的标识符相同。 但是,Cryptoki不强制执行这些关联。 (有关详情,请参见第10.6 评论。
请注意,未强制执行此关联(YMMV),但是明智的实现方式是这种方式。
在PKCS#11包装器中使用Key.getId()和X509PublicKeyCertificate.getID()方法。
对于IAIK提供程序(请注意,您需要许可证),请使用IAIKPKCS11Key.getKeyID()将公用密钥对象和专用密钥对象配对。我不知道如何从TokenKeyStore获得的证书中获得CKA_ID
的价值。
祝你好运!