Конфигурация TSL / SSL Spring HTTP invoker - PullRequest
1 голос
/ 28 февраля 2012

У меня вопрос по поводу TSL / SSL.Я программирую клиент-серверное приложение, используя Spring HTTP-Invoker.Клиент представляет собой «классическое» настольное приложение, которое распространяется через веб-запуск.Сервер будет работать на Tomcat / JBoss.Я уже проверил вызов с тест-сервисом, и он работал как чудо, но теперь я пытаюсь использовать SSL для шифрования канала.Я опубликую свой код клиента для пояснения:

<bean id="checkFuntionalityService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
    <property name="serviceUrl" value="https://localhost:8443/test-server/remoting/checkFuntionalityService" />
    <property name="serviceInterface" value="at.test.common.remote.CheckFuntionalityService" />
    <property name="httpInvokerRequestExecutor">
        <bean class="org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor">
            <property name="readTimeout" value="5000" />
            <property name="connectTimeout" value="5000" />
        </bean>
    </property>
</bean>

Я попробовал это с самозаверяющим сертификатом, который я положил в свой магазин cacerts, и он работает, но у меня все еще есть некоторые вопросы:

Есть ли способ использовать другое хранилище ключей / хранилище доверенных сертификатов на стороне клиента (например, classpath: config / test.jks)?Я планирую поместить свой сертификат в новое хранилище ключей, которое я добавлю в клиентский проект.Возможно ли это, и если да, то как я могу использовать этот магазин на стороне клиента?Я знаю, что лучшим способом был бы сертификат от доверенного CA, но это не вариант atm.Также я не могу поставить ключ в каждом магазине cacerts пользователей.Любые намеки для меня?

Я также открыт для любых предложений.Должен ли я придерживаться HTTP-Invoker?Я также мог бы использовать Spring RMI-Invoker, я понимаю, что единственное отличие состоит в том, что HTTP-Invoker использует HTTP-Post для передачи двоичного содержимого, которое вряд ли будет заблокировано брандмауэром, верно?Но что, если конфигурация брандмауэра не является проблемой для меня?Должен ли я использовать RMI или придерживаться HTTP-Invoker даже тогда?

1 Ответ

0 голосов
/ 08 февраля 2015

(Ответ на вопрос редактируется. Преобразован в вики-ответ сообщества. См. Какое действие подходит для добавления ответа на вопрос к самому вопросу? )

ОП написал:

Проблема уже решена! Я вроде перепутал хранилище ключей с хранилищем доверенных сертификатов. Поэтому, если вы нашли этот вопрос и искали ответ, взгляните на: Trust Store vs Key Store - создание с помощью keytool . Вкратце: вам нужно создать сертификат, который вы поместите в хранилище ключей для сервера и в хранилище доверенных сертификатов для клиента. Ну, по сути, между хранилищем ключей и хранилищем доверенных правдоподобных различий практически нет, единственное отличие состоит в том, что вы используете разные системные свойства для их определения в вашей программе. (например, javax.net.ssl.trustStore для склада доверенных сертификатов). Вот где я все испортил!

Мне все еще интересны причины использования Spring HTTP Invoker или нет.

...