В Tomcat запущено веб-приложение, которое выполняет вызов веб-службы в другую систему.Мне нужно защитить этот вызов с помощью SSL и аутентификации клиента.Tomcat, в котором я размещен, уже правильно настроен с хранилищем доверенных сертификатов и хранилищем ключей, специфичным для данной среды, поэтому мне нужно использовать эти хранилища для защиты своего собственного вызова.Вот где я застрял.
Как найти хранилище ключей и хранилище доверенных сертификатов, с которым настроен Tomcat, чтобы сделать мой собственный вызов SSL?Или, лучше, сгенерировать правильно настроенный SSLContext или SSLSocketFactory с этими значениями?
Вещи, которые я пробовал:
Я пытался полагаться на SSLContext.getDefault ().Это, кажется, не установлено.
Я пытался положиться на Системные свойства:
System.getProperty("javax.net.ssl.trustStore");
System.getProperty("javax.net.ssl.trustStorePassword");
System.getProperty("javax.net.ssl.trustStoreType");
System.getProperty( "javax.net.ssl.keyStore");
System.getProperty( "javax.net.ssl.keyStorePassword");
System.getProperty("javax.net.ssl.keyStoreType");
Но это кажется хрупким решением, поскольку Tomcat не долженнастроен с системными свойствами.В одной из тестовых сред информация хранилища доверия установлена, а переменные хранилища ключей - нет.Они определены в server.xml Tomcat.
Есть ли какой-то простой способ сделать это, что я пропускаю?
Обновлено:
Этот вопрос похож и один из ответов указывает на то, что SSL может обрабатываться OpenSSL \ APR, поэтому любое решение здесь будет сильно зависеть от конфигурации Tomcat.Предполагая JSSE, решения выглядят следующим образом:
- Убедитесь, что Tomcat настроен через системные свойства.
- Храните хранилища в предопределенном месте на сервере.
- Упакуйте свои собственные копии магазинов в вашей войне.
Для первых двух выше, вы должны убедиться, что политика безопасности разрешает доступ к этим файлам.
Это действительно лучшие практики для того, что я пытаюсь сделать?