Вы не можете прочитать их в один объект, но вы можете прочитать их в два объекта, а затем объединить содержимое, по крайней мере, там, где они не конфликтуют:
KeyStore ks1 = KeyStore.getInstance("jceks"), ks2 = KeyStore.getInstance("jceks");
char[] pw = args[2].toCharArray(); KeyStore.PasswordProtection pp = new KeyStore.PasswordProtection (pw);
try( InputStream is1 = new FileInputStream(args[0]) ){ ks1.load(is1,pw); }
try( InputStream is2 = new FileInputStream(args[1]) ){ ks2.load(is2,pw); }
for( Enumeration<String> aliases = ks2.aliases(); aliases.hasMoreElements(); ){
String alias = aliases.nextElement();
if( ks1.containsAlias(alias) ){ /* conflicting entry -- what to do? */ }
ks1.setEntry(alias, ks2.getEntry(alias, pp), pp);
// could check type (or other details) before deciding whether to include
}
Вы можететакже объедините их в один файл , используя keytool -importkeystore
(и они читаются в этом отдельном файле), но это не является программным решением и, таким образом, является оффтопическим или, по крайней мере, пограничным.