首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pkcs11 11- java中生成的工具键没有加载到pkcs11密钥存储库中。

pkcs11 11- java中生成的工具键没有加载到pkcs11密钥存储库中。
EN

Stack Overflow用户
提问于 2018-02-21 00:25:47
回答 1查看 1.8K关注 0票数 3

当密钥由pkcs11 11-工具生成时,当我试图从java pkcs11密钥存储库获取私钥时,我看到了一个空指针异常。如果键是使用keytool生成的,这是很好的。我也可以列出pkcs11 11工具中的密钥,但不能从keytool中列出。导入或生成键(而不是keytool )的正确方法是什么,以便使它们在java pkcs11密钥存储库中可见?

生成密钥:

代码语言:javascript
复制
pkcs11-tool --module /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so -l --pin <pin> --keypairgen --key-type rsa:2048 --label jtest

从java加载和访问密钥(代码片段):

代码语言:javascript
复制
    String configName = "/tmp/pkcs11.cfg";
    Provider p = new SunPKCS11(configName);
    Security.addProvider(p);

    char[] pin = "<pin>".toCharArray();
    KeyStore keyStore = KeyStore.getInstance("PKCS11", p);
    keyStore.load(null, pin);
    PrivateKeyEntry privateKeyEntry =
                    (PrivateKeyEntry)keyStore.getEntry("jtest", null);
    PrivateKey privateKey = privateKeyEntry.getPrivateKey(); 

当试图获取上面的私钥时,请参阅异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-21 14:00:00

Keytool在生成密钥项时自动生成自签名证书,而PKCS#11允许在没有相应证书的情况下创建密钥对。

只是简单地忽略没有证书的密钥对条目。这就是为什么keytool -list ...在使用pkcs11-tool创建条目时不显示条目的原因。如果你看一看甲骨文PKCS#11指南,特别是这些限制,它说:

一旦匹配了私钥和证书(以及它的证书链),这些信息就存储在一个私钥条目中,其中包含来自end实体证书的CKA_LABEL值作为KeyStore别名。 ..。 不属于私钥项或受信任证书项的任何私钥或证书对象都将被忽略。

因此,当您调用keyStore.getEntry("jtest", null);时,它将找不到匹配的键项,这将导致下面一行中的NPE。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48896395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档