Клиент Solaris JMS подключается к проблеме безопасности Weblogic 11g t3s - PullRequest
2 голосов
/ 12 января 2010

Когда я пытаюсь подключить протокол Weblogic t3s в Solaris Server, он показывает эту ошибку:

java.lang.IllegalStateException: Not enough cryptography available to enable a cipher suite!
        at com.certicom.tls.interfaceimpl.TLSSystem.resetCipherSuiteSupport(Unknown Source)
        at com.certicom.tls.interfaceimpl.TLSSystem.setCertificateSupport(Unknown Source)
        at com.certicom.tls.interfaceimpl.TLSSystem.<init>(Unknown Source)
        at com.certicom.tls.interfaceimpl.TLSSystem.<init>(Unknown Source)
        at com.certicom.net.ssl.SSLContext.<init>(Unknown Source)
        at com.bea.sslplus.CerticomSSLContext.<init>(Unknown Source)
        at sun.reflect.GeneratedConstructorAccessor6.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at weblogic.security.utils.SSLSetup.getSSLDelegateInstance(SSLSetup.java:122)
        at weblogic.security.utils.SSLContextWrapper.<init>(SSLContextWrapper.java:48)
        at weblogic.security.utils.SSLContextWrapper.getInstance(SSLContextWrapper.java:43)
        at weblogic.security.utils.SSLSetup.getSSLContext(SSLSetup.java:238)
        at weblogic.security.SSL.SSLClientInfo.getSSLSocketFactory(SSLClientInfo.java:101)
        at weblogic.socket.ChannelSSLSocketFactory.getSocketFactory(ChannelSSLSocketFactory.java:170)
        at weblogic.socket.ChannelSSLSocketFactory.createSocket(ChannelSSLSocketFactory.java:77)
        at weblogic.socket.ChannelSSLSocketFactory.createSocket(ChannelSSLSocketFactory.java:114)
        at weblogic.socket.BaseAbstractMuxableSocket.createSocket(BaseAbstractMuxableSocket.java:133)
        at weblogic.rjvm.t3.MuxableSocketT3.newSocketWithRetry(MuxableSocketT3.java:206)
        at weblogic.rjvm.t3.MuxableSocketT3.connect(MuxableSocketT3.java:375)
        at weblogic.rjvm.t3.ConnectionFactoryT3S.createConnection(ConnectionFactoryT3S.java:34)
        at weblogic.rjvm.ConnectionManager.createConnection(ConnectionManager.java:1773)
        at weblogic.rjvm.ConnectionManager.findOrCreateConnection(ConnectionManager.java:1416)
        at weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:437)
        at weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:315)
        at weblogic.rjvm.RJVMManager.findOrCreateRemoteInternal(RJVMManager.java:251)
        at weblogic.rjvm.RJVMManager.findOrCreate(RJVMManager.java:194)
        at weblogic.rjvm.RJVMFinder.findOrCreateRemoteServer(RJVMFinder.java:238)
        at weblogic.rjvm.RJVMFinder.findOrCreateInternal(RJVMFinder.java:200)
        at weblogic.rjvm.RJVMFinder.findOrCreate(RJVMFinder.java:170)
        at weblogic.rjvm.ServerURL.findOrCreateRJVM(ServerURL.java:153)
        at weblogic.jndi.WLInitialContextFactoryDelegate$1.run(WLInitialContextFactoryDelegate.java:344)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
        at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:339)
        at weblogic.jndi.Environment.getContext(Environment.java:315)
        at weblogic.jndi.Environment.getContext(Environment.java:285)
        at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
        at javax.naming.InitialContext.init(InitialContext.java:223)
        at javax.naming.InitialContext.<init>(InitialContext.java:197)

Я определил следующие параметры:

-Djava.protocol.handler.pkgs=weblogic.net -Dweblogic.security.SSL.ignoreHostnameVerification=true -Dweblogic.security.TrustKeyStore=CustomTrust -Dweblogic.security.CustomTrustKeyStoreType=JKS -Dweblogic.security.CustomTrustKeyStoreFileName=keystore -Dweblogic.security.CustomTrustKeyStorePassPhrase=passphrase -Dssl.debug=true -Dweblogic.StdoutDebugEnabled=true

Как я могу это исправить? В Windows работает тот же источник и те же параметры.

Спасибо.

Ответы [ 5 ]

2 голосов
/ 07 апреля 2010

Это решение приходит с небольшим опозданием, но предназначено для других, имеющих такую ​​же проблему.

Очевидно, что принятое решение о добавлении webserviceclient + ssl.jar в путь к классам работает, поскольку полный клиент WebLogic - wlfullclient.jar содержит ссылки на другие JAR-файлы в своем файле MANIFEST.MF. Добавление клиента JAR для веб-сервисов решает проблему, поскольку, по-видимому, он имеет минимальный набор классов, необходимый для корректной работы клиента при использовании SSL / TLS. Ошибка обычно возникает, когда копии wlfullclient.jar и wlcipher.jar сделаны в другом каталоге и добавлены в путь к классам. Затем JVM не может загрузить другие зависимые классы из JAR-файлов, на которые есть ссылки из файла MANIFEST.

Фактическим решением было бы добавить wlfullclient.jar, сгенерированный в каталоге WL_HOME \ server \ lib, в CLASSPATH. Все другие зависимые JAR-файлы будут затем получены через соответствующий загрузчик классов, поскольку манифест ссылается на них через относительные пути к каталогам.

1 голос
/ 14 января 2010

Наконец, мы получили решение.

Просто добавьте webserviceclient + ssl.jar в ваш путь к классам, чтобы решить эту проблему.

  • webserviceclient + ssl.jar не включен в wlfullclient.jar.
1 голос
/ 12 января 2010

Используете ли вы того же поставщика JVM на обеих машинах?

Скорее всего, ЦС, используемый для создания хранилища ключей, доступен в хранилище доверенных сертификатов Windows, но недоступен в Solaris, при условии, что хранилище ключей было создано в Windows, и ЦС еще не поставляется с JRE, используемым в Solaris. . Различия обсуждаются здесь .

Как настроить склад доверенных сертификатов для добавления CA

0 голосов
/ 12 июля 2013

Это было упрощено для 10.3.4 и выше. Weblogic.

Просто добавьте wlthint3client.jar из каталога / server / lib в Classpath вашего клиента

Я только подтвердил этоработает для связи ejb, но состояние документов

Этот выпуск поддерживает следующее:

Oracle WebLogic's T3/T3S protocol for Remote Method Invocation (RMI), including RMI over HTTP (HTTP tunneling). For more information on WebLogic T3 communication, see "Using WebLogic RMI with T3 Protocol" in Programming RMI for Oracle WebLogic Server.

Access to JMS, JMX, JNDI, and EJB resources available in WebLogic Server.

http://docs.oracle.com/cd/E17904_01/web.1111/e13717/wlthint3client.htm

0 голосов
/ 12 января 2010

Вы уверены, что ваш keystore файл поднят? Возможно, попробуйте использовать абсолютный путь при указании опции -Dweblogic.security.CustomTrustKeyStoreFileName.

Кроме того, действительно ли путь к классу клиента JMS одинаков в обеих средах?

Попробуйте указать wlserver_10.3/server/lib/wlfullclient.jar (который вы создаете, выполнив команду java -jar wljarbuilder.jar) и wlserver_10.3/server/lib/wlcipher.jar (да, wlfullclient.jar не настолько полный!) На пути к классам.

...