Solaris JMS-Client eine Verbindung zu Weblogic 11g t3s security problem
Wenn ich versuche zu verbinden Weblogic t3s-Protokoll in der Solaris-Server, zeigt es diese Fehlermeldung:
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)
Habe ich folgende Parameter definieren:
-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
Wie kann ich es beheben? Gleiche Quelle und gleiche Parameter ist unter Windows arbeiten.
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Lösung kommt ein bisschen spät in den Tag, aber gemeint ist, für andere mit dem gleichen problem.
Offenbar ist die anerkannte Lösung hinzufügen webserviceclient+ssl.jar der classpath funktioniert, da der WebLogic Full Client - wlfullclient.jar Verweise zu anderen JARs im MANIFEST.MF-Datei. Hinzufügen der webservices-client-JAR-Datei das Problem behebt, da es scheint, um den minimalen Satz von Klassen benötigt für einen korrekten Betrieb der client bei der Verwendung von SSL/TLS. Der Fehler wird in der Regel festgestellt werden, wenn Kopien der wlfullclient.jar und wlcipher.jar in einem anderen Verzeichnis, und, werden dem classpath Hinzugefügt. Die JVM kann dann nicht laden und andere abhängige Klassen aus JARs, auf die verwiesen wird, die von innerhalb der MANIFEST-Datei.
Die eigentliche Lösung wäre, den wlfullclient.jar generiert in der WL_HOME\server\lib-Verzeichnis des CLASSPATH. Alle anderen abhängigen JARs würde dann abgeholt werden über die entsprechenden classloader, da das manifest Verweise, die diese über relative Pfade.
Sind Sie mit der gleichen JVM vendor auf beiden Maschinen?
Wahrscheinlich der CA zum erzeugen der keystore ist auf der Windows truststore-aber nicht unter Solaris, die Annahme wird dem keystore erzeugt wurde, in Windows und der CA ist noch nicht im Lieferumfang der JRE verwendet wird, auf Solaris. Die Unterschiede werden diskutiert hier.
Wie konfigurieren der truststore hinzufügen eines CA -
Schließlich haben Wir die Lösung.
Fügen Sie einfach webserviceclient+ssl.jar zu Ihrem classpath wird das problem lösen.
Sind Sie sicher, dass Sie
keystore
Datei abgeholt? Vielleicht versuchen, verwenden Sie einen absoluten Pfad bei der Angabe des-Dweblogic.security.CustomTrustKeyStoreFileName
option.Außerdem sind die classpath des JMS-client wirklich die gleichen in beiden Umgebungen?
Versuchen
wlserver_10.3/server/lib/wlfullclient.jar
(, die Sie erstellen mit dem Befehljava -jar wljarbuilder.jar
) undwlserver_10.3/server/lib/wlcipher.jar
(ja,wlfullclient.jar
ist nicht voll!) auf dem classpath.Dieser wurde vereinfacht für 10.3.4 und höher Weblogic.
Fügen Sie einfach die wlthint3client.jar aus dem /server/lib-Verzeichnis, um Ihre Kunden Classpath
Ich habe nur bestätigt, das funktioniert für ejb-Kommunikation, aber die docs Zustand
http://docs.oracle.com/cd/E17904_01/web.1111/e13717/wlthint3client.htm