У меня вопрос по поводу 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 даже тогда?