Frage

Wenn ich versuche, das Weblogic T3S -Protokoll in Solaris Server zu verbinden, zeigt es diesen Fehler an:

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)

Ich habe die folgenden Parameter definiert:

-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 reparieren? Gleiche Quelle und gleiche Parameter funktionieren in Windows.

Danke.

War es hilfreich?

Lösung

Diese Lösung kommt etwas spät am Tag, ist aber für andere gedacht, die das gleiche Problem haben.

Anscheinend die akzeptierte Lösung für das Hinzufügen von WebServiceClient+ssl.jar zu dem Klassenpfad, da der Weblogic Vollclient - wlullclient.jar Verweise auf andere Gläser in seiner Manifest.mf -Datei hat. Das Hinzufügen des WebServices -Client -Jars löst das Problem auf, da es anscheinend die minimale Klassen enthält, die für den korrekten Betrieb des Clients bei der Verwendung von SSL/TLS erforderlich ist. Der Fehler tritt normalerweise auf, wenn Kopien von wlullclient.jar und wlcipher.jar in einem anderen Verzeichnis hergestellt und dem Klassenpfad hinzugefügt werden. Das JVM lädt dann andere abhängige Klassen aus Gläser, auf die aus der Manifestdatei verwiesen wird, nicht.

Die tatsächliche Lösung wäre, den in der generierten Wlfullclient.jar hinzuzufügen, der erzeugt wird Wl_homeserver lib Directory, zum Klassenpfad. Alle anderen abhängigen Gläser würden dann über den entsprechenden Klassenloader aufgegriffen, da die Manifest auf diese über relative Verzeichnispfade verweist.

Andere Tipps

Verwenden Sie denselben JVM -Anbieter für beide Maschinen?

Höchstwahrscheinlich ist die CA zum Generieren des Keystore im Windows TrustStore verfügbar, aber nicht auf Solaris verfügbar. Die Annahme, dass der Keystore in Fenstern generiert wurde und die CA noch nicht mit dem JRE -Gebäude auf Solaris versendet wird. Die Unterschiede werden diskutiert hier.

Wie man konfigurieren die Truststore, um eine CA hinzuzufügen

Schließlich haben wir die Lösung.

Fügen Sie einfach WebServiceClient+SSL.jar zu Ihrem Klassenpfad hinzu.

  • WebServiceClient+ssl.jar nicht in wlullclient.jar enthalten.

Sind Sie sicher, dass Sie keystore Datei wird abgeholt? Versuchen Sie vielleicht, einen absoluten Pfad zu verwenden, wenn Sie die angeben -Dweblogic.security.CustomTrustKeyStoreFileName Möglichkeit.

Sind auch der Klassenpfad des JMS -Kunden in beiden Umgebungen wirklich identisch?

Versuchen Sie zu liefern wlserver_10.3/server/lib/wlfullclient.jar (Sie erstellen, indem Sie den Befehl ausführen java -jar wljarbuilder.jar) und wlserver_10.3/server/lib/wlcipher.jar (ja, wlfullclient.jar ist nicht so voll!) Auf dem Klassenpfad.

Dies wurde für 10.3.4 und über Weblogic vereinfacht.

Fügen Sie einfach den WltHINT3Client.jar aus dem Verzeichnis /server /lib dem Klassenpfad Ihres Kunden hinzu

Ich habe nur bestätigt, dass dies für die EJB -Kommunikation funktioniert, aber der DOCS -Zustand

Diese Veröffentlichung unterstützt Folgendes:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top