Я пытаюсь вызвать веб-сервис с взаимной аутентификацией (сертификат сервера и клиента), используя ось 1.4, работающую на сервере weblogi c.
Чтобы загрузить свое собственное хранилище ключей, содержащее ключи клиента, я создал Пользовательский SocketFactory, реализующий интерфейс SecureSocketFactory, который инициализирует SSLContext с моим хранилищем ключей, и я установил его в Axis Properties перед вызовом:
AxisProperties.setProperty("axis.socketSecureFactory", "en.card.dao.CustomSecureSocketFactory");
Я в своей среде разработки, все в порядке. Я звоню в службу, и рукопожатие работает.
При развертывании пакета в тестовой среде я получаю эту ошибку:
org.apache.axis.AxisFault: ; nested exception is:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101) ~[axis-1.4.jar:?]
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154) ~[axis-1.4.jar:?]
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) ~[axis-1.4.jar:?]
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) ~[axis-1.4.jar:?]
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) ~[axis-1.4.jar:?]
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) ~[axis-1.4.jar:?]
at org.apache.axis.client.Call.invokeEngine(Call.java:2784) ~[axis-1.4.jar:?]
at org.apache.axis.client.Call.invoke(Call.java:2767) ~[axis-1.4.jar:?]
at org.apache.axis.client.Call.invoke(Call.java:2443) ~[axis-1.4.jar:?]
at org.apache.axis.client.Call.invoke(Call.java:2366) ~[axis-1.4.jar:?]
at org.apache.axis.client.Call.invoke(Call.java:1812) ~[axis-1.4.jar:?]
Сравнение журналов тестирования и разработки Я заметил, что в тестовой среде Класс CartesioSecureSocketFactory не инициализируется во время вызова службы, и настраиваемое хранилище ключей не проверяется и не проверяется, например, если свойство axis.socketSecureFactory не читается и ось использует стандартный SSLContext.
Я уже проверил, что: - конечная точка может быть повторно подключена в обеих средах (в противном случае я не получу ошибку рукопожатия) - развернутое пользовательское хранилище ключей одинаково и работает в обоих средах (я проверял это в тестовой среде, непосредственно создавая CustomSecureSocketFactory).
I начинаю предполагать, что проблема в конфигурации weblogi c.
У кого-то есть идеи?