У меня есть два приложения, работающих на одной и той же виртуальной машине Java, и оба используют разные хранилища ключей и магазины доверия.
Жизнеспособным вариантом будет использование одного хранилища ключей и импорт всех остальных в общее хранилище ключей (например, keytool -import), но это действительно помогло бы моим требованиям, если бы я мог использовать отдельные хранилища ключей для отдельных приложений, работающих в одном и том же jvm.
Я мог бы установить хранилище ключей и доверительные хранилища для использования в качестве параметров jvm или системных свойств следующим образом:
java -Djavax.net.ssl.keyStore=serverKeys
-Djavax.net.ssl.keyStorePassword=password
-Djavax.net.ssl.trustStore=serverTrust
-Djavax.net.ssl.trustStorePassword=password SSLApplication
или
System.setProperty("javax.net.ssl.keyStore","serverKeys")
Но проблема с этим подходом заключается в том, что он указывает хранилище ключей /truststore, которое будет использоваться на уровне JVM, поэтому все приложения, работающие в одной JVM, получают одно хранилище/хранилище доверия.
Я также попытался создать собственный SSLContext и установить его как значение по умолчанию, но он также устанавливает контекст для всех приложений, работающих в одной JVM.
SSLContext context = SSLContext.getInstance("SSL");
context.init(kms, tms, null);
SSLContext.setDefault(context);
Я хочу иметь возможность использовать различные хранилища/доверительные хранилища без изменения отдельных кодов приложений.
Решение, которое может динамически регистрировать несколько хранилищ ключей в дополнение к хранилищу ключей/сертификатам по умолчанию в jre в jvm, будет большим.
Решение будет работать следующим образом:
- Когда JVM загружается, он загружает все сертификаты по умолчанию/хранилища ключей из папки jre/certs (по умолчанию java-поведение, когда не указано ключей).
- Когда приложение 1 загружает, оно регистрирует свои хранилища ключей,
- то при загрузке приложения 2 он регистрирует свои хранилища ключей...
Пожалуйста, дайте мне знать ваши идеи или решения. Спасибо заранее!