具有多个密钥和不同密码的Java密钥库

我创建了一个java JKS keytore:

keytool -genkey -alias mydomain -keyalg RSA -keystore mytest.jks -keysize 2048 

之后我创建了一个P12文件,使用服务器的CRT和openssl:

 openssl pkcs12 -export -in server.crt -inkey server.key > server.p12 

现在我将P12文件导入到我之前创建的JKS密钥库中:

 keytool -importkeystore -srckeystore server.p12 -destkeystore mytest.jks -srcstoretype pkcs12 

它工作,我可以使用此JKS初始化到服务器的SSL连接:

 public static SSLContext initSSLContext(String keystoreLocation, String keystorePwd, String truststorePwd, String serverCrtPwd) SSLContext context; context = SSLContext.getInstance("TLS"); KeyStore ks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream(keystoreLocation), keystorePwd.toCharArray()); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(ks, serverCrtPwd.toCharArray()); KeyStore trustStore = KeyStore.getInstance("jks"); trustStore.load(new FileInputStream(keystoreLocation), truststorePwd.toCharArray()); TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(trustStore); context.init(kmf.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom()); 

将导入的CRT文件的密钥库位置,密码和密码放在其工作的参数中。

现在我必须将多个P12文件转换并导入到同一个JKS密钥库中,多次运行导入部分,我有多个密钥导入了不同的别名,当然还有不同的密码。 我的问题是,现在每个导入的密钥都有自己的密码。 我想用给定密钥库中的每个可用别名初始化一次SSL连接。 因为更多服务器将使用SSL将数据发送到我的应用程序,它们具有不同的密码,它们被导入到我的密钥库但是我无法使用多个密码初始化我的密钥库,它只接受一个密码。 如何使用具有不同别名和不同密码的多个导入的P12初始化我的密钥库? init方法只接受“从密钥库中恢复密钥”的一个参数。

谢谢!