Наша система взаимодействует с несколькими поставщиками веб-сервисов. Все они вызывается из одного клиентского приложения Java. Все веб-службы до сих пор прошли через SSL, но ни один из них не использует клиентские сертификаты. Ну, новый партнер меняет это.Выбор сертификата SSL-сертификата в Java
Простота использования приложения для справки; настройка javax.net.ssl.keyStore
и javax.net.ssl.keyStorePassword
сделают это. Однако проблема заключается в том, как сделать так, чтобы он использовал только сертификат при вызове этой конкретной веб-службы. Я предполагаю, что в более общем плане мы хотели бы иметь возможность выбрать сертификат клиента, который будет использоваться, если таковой имеется.
Одним из быстрых решений может быть установка свойств системы, вызов методов и их снятие. Единственная проблема заключается в том, что мы имеем дело с многопоточным приложением, поэтому теперь нам нужно иметь дело с синхронизацией или блокировками или с тобой.
Каждый клиент обслуживания должен быть полностью независим друг от друга, и они индивидуально упакованы в отдельные JAR. Таким образом, один из вариантов, который произошел со мной (хотя мы не проанализировали его должным образом) заключается в том, чтобы каким-то образом изолировать каждый JAR, возможно, загружать каждый из них под другую виртуальную машину с разными параметрами. Это просто идея, что я не знаю, как ее реализовать (или, если это вообще возможно, если на то пошло.)
This post предлагает выбрать индивидуальный сертификат из хранилища ключей, но как его подключить к запросу, похоже, совсем другая проблема.
Мы используем классы Java 1.5, Axis2 и клиента, созданные с помощью wsimport
или wsdl2java
.
К сожалению, у нас нет контроля над серверами. Я также надеялся, что эти подсказки могут быть полезны, но тест показал, что, по крайней мере, с одним сервером их не было. WRT Axis2, который также был моим опытом. Если вам известно о другом инструменте Java, который допускает такое поведение, я бы очень признателен за ваше разделение; мы с удовольствием рассмотрим его. – Carlos
@ Карлос - Может, я не был ясен. Вам не нужен какой-либо контроль над сервером; если вашему партнеру теперь требуется сертификат клиента, они будут настраивать свой сервер для его запроса. Ваш клиент будет * не * отправлять этот сертификат на другие серверы, потому что они (предположительно) не запрашивают его. Единственная потенциальная проблема заключается в том, что если дополнительные службы начнут требовать сертификат клиента, но не будут принимать те же ЦС. – erickson
Получил, спасибо. Наверное, другой вопрос остается.Если завтра мы добавим еще одну веб-службу, которая также требует сертификата клиента, есть ли способ выбрать, какой сертификат в хранилище ключей должен присутствовать для каждой службы? – Carlos