Я боролся с этим уже несколько дней. Я использую WebLogic 11g (10.3.4.0) в Windows (Linux ведет себя так же). Я настроил двухстороннюю аутентификацию SSL, следуя указаниям http://emo.sourceforge.net/cert-login-howto.html и http://middlewareforum.com/weblogic/?p=312. Я использовал JMeter в качестве клиента со следующими параметрами JVM. Автономный клиент Java ведет себя так же.
-Djavax.net.ssl.keyStoreType = pkcs12 -Djavax.net.ssl.trustStoreType = jks -Djavax.net.ssl.keyStore = c: /Users/sli/keys/browser.p12 -Djavax.net.debug = ssl -Djavax.net.ssl.keyStorePassword = PASSWORD-Djavax.net.ssl.trustStorePassword = changeit -Dweblogic.security.SSL.ignoreHostnameVerification = true
Отлично работает с тонким клиентом t3 (wlthint3client.jar), но не работает, когда я переключаюсь на полный клиент (wlfullclient.jar). Одно из приложений как-то застряло с полным клиентом. Это отдельная проблема. Кстати, полный клиент не заполнен, так как для SSL нужны webserviceclient + ssl.jar и cryptoj.jar. Он жалуется на следующее у клиента.
javax.naming.CommunicationException [Исключением корня является java.net.ConnectException: t3s: // localhost: 7503: пункт назначения недоступен; Вложенное исключение:
com.bea.sslplus.TwoWaySSLHandshakeStageSocketException: SocketException во время двухстороннего рукопожатия; проверьте сертификат клиента или сетевое соединение; Нет доступного маршрутизатора к месту назначения]
Вот журнал на стороне сервера.
<39146459 SSL версия 2 без заполнения>
<39149058 SSL3 / TLS MAC>
<39149058 получил SSL_20_RECORD>
<39149058 SSL3 / TLS MAC>
<39149058 получил рукопожатие>
(Неизвестный источник)
at com.certicom.tls.record.handshake.HandshakeHandler.fireAlert (Неизвестный источник)
в com.certicom.tls.record.handshake.ServerStateSentHelloDone.handle (Неизвестный источник)
в com.certicom.tls.record.handshake.HandshakeHandler.handleHandshakeMessage (Неизвестный источник)
в com.certicom.tls.record.handshake.HandshakeHandler.handleHandshakeMessages (Неизвестный источник)
на com.certicom.tls.record.MessageInterpreter.interpretContent (неизвестный источник)
в com.certicom.tls.record.MessageInterpreter.decryptMessage (Неизвестный источник)
в com.certicom.tls.record.ReadHandler.processRecord (Неизвестный источник)
на com.certicom.tls.record.ReadHandler.readRecord (неизвестный источник)
на com.certicom.tls.record.ReadHandler.readUntilHandshakeComplete (неизвестный источник)
at com.certicom.tls.interfaceimpl.TLSConnectionImpl.completeHandshake (неизвестный источник)
в javax.net.ssl.impl.SSLSocketImpl.startHandshake (Неизвестный источник)
на weblogic.server.channels.DynamicSSLListenThread $ 1.run (DynamicSSLListenThread.java:130)
на weblogic.work.ExecuteThread.execute (ExecuteThread.java:207)
на weblogic.work.ExecuteThread.run (ExecuteThread.java:176)
>
<37447543 SSL версия 2 без заполнения>
<37447552 SSL3 / TLS MAC>
<37447552 получил SSL_20_RECORD>
<37447552 SSL3 / TLS MAC>
<37447552 получил рукопожатие>
(Неизвестный источник)
at com.certicom.tls.record.handshake.HandshakeHandler.fireAlert (Неизвестный источник)
в com.certicom.tls.record.handshake.ServerStateSentHelloDone.handle (Неизвестный источник)
в com.certicom.tls.record.handshake.HandshakeHandler.handleHandshakeMessage (Неизвестный источник)
в com.certicom.tls.record.handshake.HandshakeHandler.handleHandshakeMessages (Неизвестный источник)
на com.certicom.tls.record.MessageInterpreter.interpretContent (неизвестный источник)
в com.certicom.tls.record.MessageInterpreter.decryptMessage (Неизвестный источник)
в com.certicom.tls.record.ReadHandler.processRecord (Неизвестный источник)
на com.certicom.tls.record.ReadHandler.readRecord (неизвестный источник)на com.certicom.tls.record.ReadHandler.readUntilHandshakeComplete (неизвестный источник)
at com.certicom.tls.interfaceimpl.TLSConnectionImpl.completeHandshake (неизвестный источник)
в javax.net.ssl.impl.SSLSocketImpl.startHandshake (Неизвестный источник)
на weblogic.server.channels.DynamicSSLListenThread $ 1.run (DynamicSSLListenThread.java:130)
на weblogic.work.ExecuteThread.execute (ExecuteThread.java:207)
на weblogic.work.ExecuteThread.run (ExecuteThread.java:176)
>
Я провел некоторое исследование и обнаружил (/1840533/klient-solaris-jms-podklychaetsya-k-probleme-bezopasnosti-weblogic-11g-t3s), что кто-то заставил его работать с использованием полного клиента на t3s для двухсторонней аутентификации SSL, но ссылка не дает, как. Я также попытался использовать опцию безопасности WebLogic упоминается там, и он все еще не работает для меня.
Спасибо за вашу помощь.