2
我想生成一个密钥对并以编程方式将其插入到Java KeyStore中。我可以使用命令行来完成我想要的功能,但是如何使用Java代码执行此操作?如何生成密钥对并以编程方式将其插入到KeyStore中(不使用Java KeyTool)?
这是命令行:
keytool -genkeypair \
-dname "cn=Unknown" \
-alias main \
-keyalg RSA \
-keysize 4096 \
-keypass 654321 \
-keystore C:\\Users\\Felipe\\ks \
-storepass 123456 \
-validity 365
这里是Java代码,我到目前为止有:
public static void main(String[] args) {
try (
FileOutputStream fos = new FileOutputStream("C:\\Users\\Felipe\\ks");
) {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(4096, SecureRandom.getInstance("SHA1PRNG"));
KeyPair keyPair = keyPairGenerator.generateKeyPair();
Certificate[] chain = {};
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null);
keyStore.setKeyEntry("main", keyPair.getPrivate(), "654321".toCharArray(), chain); // Error: Private key must be accompanied by certificate chain
keyStore.store(fos, "123456".toCharArray());
} catch (NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException e) {
e.printStackTrace();
}
}
但我不断收到以下错误消息:Private key must be accompanied by certificate chain
。
我想我应该创建一个证书并将其插入到证书数组中,但如何做到这一点?