当密钥由 pkcs11-tool 生成时,我在尝试从 java pkcs11 密钥库获取私钥时看到空指针异常。如果密钥是使用 keytool 生成的,这可以正常工作。我也可以从 pkcs11-tool 中列出密钥,但不能从 keytool 中列出。导入或生成 keytool 以外的密钥的正确方法是什么,以便它们对 java pkcs11 密钥库可见?
生成密钥:
pkcs11-tool --module /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so -l --pin <pin> --keypairgen --key-type rsa:2048 --label jtest
从 java 加载并访问密钥(代码片段):
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();
尝试获取上面的私钥时,请参阅异常。