поэтому у меня есть два ключа в one.jks для двух разных CN, двух разных клиентских серверов. Я дал каждому ключу свой псевдоним, но один и тот же пароль.
public SSLSocketFactory sslSocketFactory(String keyStorePath, String keyStorePassword) throws IOException {
FileInputStream keyStoreInputStream = null;
KeyManagerFactory kmf = null;
try {
if (!StringUtils.isEmpty(keyStorePath) && !StringUtils.isEmpty(keyStorePassword)) {
keyStoreInputStream = new FileInputStream(keyStorePath);
final KeyStore objKeystore = KeyStore.getInstance(MQConstants.SSL_JKS);
objKeystore.load(keyStoreInputStream, keyStorePassword.toCharArray());
kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(objKeystore, keyStorePassword.toCharArray());
}
final SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init((kmf != null ? kmf.getKeyManagers() : null), null,
null);
return sslContext.getSocketFactory();
} catch (final Exception e) {
throw new RuntimeException(e);
} finally {
if (keyStoreInputStream != null) {
keyStoreInputStream.close();
}
}
}
@Lazy
@Bean("firstSslSocketFactory")
public SSLSocketFactory firstSslSocketFactory() throws IOException {
final String keyStorePath = System.getProperty(MQConstants.SSL_KEYSTORE_PATH);
final String keyStorePassword = System.getProperty(MQConstants.SSL_KEYSTORE_PW);
//final String alias = System.getProperty(MQConstants.ALIAS_1);
return sslSocketFactory(keyStorePath, keyStorePassword);
}
@Lazy
@Bean("secondSslSocketFactory")
public SSLSocketFactory secondSslSocketFactory() throws IOException {
final String keyStorePath = System.getProperty(MQConstants.SSL_KEYSTORE_PATH);
final String keyStorePassword = System.getProperty(MQConstants.SSL_KEYSTORE_PW);
//final String alias = System.getProperty(MQConstants.ALIAS_2);
return sslSocketFactory(keyStorePath, keyStorePassword);
}
Будет ли KeyManager автоматически знать, какой ключ использовать? Иначе я подумываю использовать закомментированную переменную Alias и перейти к методу top? Но тогда как бы я выбрал по псевдониму?
Спасибо