首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确重新加载PKCS11 KeyStore

如何正确重新加载PKCS11 KeyStore
EN

Stack Overflow用户
提问于 2015-02-19 13:15:09
回答 2查看 3.3K关注 0票数 1

我想在PKCS11密钥库中测试我的密钥。但是,当外部进程在存储中添加或删除密钥时,我的密钥存储库似乎没有更新。

第二次打印别名时,不包括插入在两者之间的新别名。

如何正确地重新加载密钥存储库?

代码语言:javascript
复制
public class KeyStoreTest {

 public static void main(String[] args) throws KeyStoreException,
            NoSuchAlgorithmException, CertificateException, IOException, LoginException{

        // initialize keystore
        InputStream is = CheckUploadScript.class.getResourceAsStream("pkcs11-hsm.config");
        AuthProvider provider = new sun.security.pkcs11.SunPKCS11(is);
        KeyStore ks = KeyStore.getInstance("PKCS11", provider);
        ks.load(null, "0000".toCharArray());

        // print all aliases
        Enumeration<String> aliases = ks.aliases();
        for (String key : Collections.list(aliases))
            System.out.println("alias: " + key);

        // upload or delete keys with external tool here


        // print all aliases again (does not change)
        ks.load(null, "0000".toCharArray());
        aliases = ks.aliases();
        for (String key : Collections.list(aliases))
            System.out.println("alias: " + key);
    }
}

编辑:

我遵循了PKCS11引用的说明:http://docs.oracle.com/javase/7/docs/technotes/guides/security/p11guide.html

代码语言:javascript
复制
char[] pin = ...; 
KeyStore ks = KeyStore.getInstance("PKCS11");
ks.load(null, pin);

据我理解,当使用PKCS11密钥存储库时,安全提供程序将处理密钥的存储和加载。因此,在加载密钥存储库时,不必指定InputStream。

EN

回答 2

Stack Overflow用户

发布于 2016-02-26 23:04:37

对于PKCS11信任库,KeyStore.getInstance的InputStream参数必须(也许应该)为null。它不被使用,所以没有文件要关闭。

票数 1
EN

Stack Overflow用户

发布于 2015-02-26 10:12:55

尝试显式加载它

KeyStore keyStore = KeyStore.getInstance("PKCS11", provider); keyStore.load(trustStore, trustStorePassword); trustStore.close();

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

https://stackoverflow.com/questions/28607384

复制
相关文章

相似问题

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