У меня есть веб-приложение, работающее в Tomcat, которое вызывает вызов веб-службы в другой системе. Мне нужно защитить этот вызов с помощью SSL и проверки подлинности клиента. Tomcat, в котором я размещен, уже правильно настроен с доверительным магазином и хранилищем ключей, специфичным для среды, поэтому мне нужно использовать эти магазины для обеспечения моего собственного вызова. Здесь я застрял.Доступ к настроенному Tomcat KeyStore и TrustStore
Как я могу найти хранилище ключей и доверительное хранилище, с которыми настроен 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.
Есть ли какой-нибудь простой способ сделать это, что я не замечаю?
Обновлено:
This question is similar и один из ответов указывает на то, что SSL может обрабатываться OpenSSL \ АПР, поэтому любое решение здесь будет в значительной степени зависеть от способа Tomcat сконфигурирован. Предполагая JSSE, решения выглядят так:
- Обеспечить, чтобы Tomcat был настроен с помощью свойств системы.
- Имейте магазины, находящиеся в предопределенном месте на сервере.
- Пакет собственных копий магазинов в вашей войне.
Для первых двух вы должны убедиться, что политика безопасности позволяет получить доступ к этим файлам.
Действительно ли это лучшие практики для того, что я пытаюсь сделать?
Возможный дубликат [Доступ к секретному ключу SSL с сервлета] (http://stackoverflow.com/questions/4048892/accessing-ssl-private-key-from-a-servlet) – Bruno
Обратите внимание, что в целом не возможность доступа к настройкам SSL в контейнере (в частности, к его закрытому ключу) является функцией безопасности, поскольку веб-сервер может не полностью доверять. Вы также можете быть заинтересованы в следующем: http://stackoverflow.com/q/5162279/372643 – Bruno
Я подозревал, что это может быть функция безопасности, но это странно, поскольку эти магазины на самом деле довольно легко доступны в зависимости от того, как настроен Tomcat. Я надеялся, что есть способ отметить сервлет как доверенный или что-то еще. – Don