如何以编程方式创建新的KeyStore?

Καr*_*hικ 54 java keystore

我正在尝试以编程方式在Java中创建一个新的密钥库.以下代码:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.setCertificateEntry("alias", cert);
Run Code Online (Sandbox Code Playgroud)

抛出未初始化的KeyStore异常.

Ass*_*iel 69

要在Java中创建新的KeyStore,首先需要创建KeyStore文件,然后使用以下store(FileOutputStream, char[])方法存储它:

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

char[] password = "some password".toCharArray();
ks.load(null, password);

// Store away the keystore.
FileOutputStream fos = new FileOutputStream("newKeyStoreFileName");
ks.store(fos, password);
fos.close();
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助,你可以在这里看到更多信息.

  • 您应该使用 try-with-resources 或 finally 块来确保输出流已关闭。 (3认同)

cha*_*sis 54

KeyStore需要在创建后加载.load方法要求FileInputStream读取,但如果提供null,则加载空的KeyStore.

看到这个链接

  • ^链接:http://download.oracle.com/javase/6/docs/api/java/security/KeyStore.html#load%28java.io.InputStream,%20char[]%29 (4认同)

小智 8

我使用此代码,它有效,希望它可以帮助。

public static KeyStore createKeyStore() throws Exception {
    File file = new File("/Users/keyserverstore.keystore");
    KeyStore keyStore = KeyStore.getInstance("JKS");
    if (file.exists()) {
        // if exists, load
        keyStore.load(new FileInputStream(file), "123456".toCharArray());
    } else {
        // if not exists, create
        keyStore.load(null, null);
        keyStore.store(new FileOutputStream(file), "123456".toCharArray());
    }
    return keyStore;
}
Run Code Online (Sandbox Code Playgroud)