2

我想在 java 中使用 pkcs11 令牌。因此,我使用“IAIK”作为 pkcs11 java 包装器。我可以搜索密钥和证书等对象,但找不到哪个密钥属于哪个证书。我使用“CryptoKi Manager”搜索令牌中的对象,它显示了证书和密钥之间的连接,如下图所示。然后我研究了PKCS11标准,它说有一个名为“certId”的字段声明了这个连接,但我在“IAIK”中找不到它。“IAIK”是否在其证书对象中支持此功能?如何?

在此处输入图像描述

4

1 回答 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_IDTokenKeyStore获得的证书中获取价值。

祝你好运!

于 2019-06-30T16:06:47.097 回答