Domanda

Quando si tenta di connettersi protocollo T3S Weblogic Server di Solaris, mostra questo errore:

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)

Ho definire i seguenti parametri:

-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

Come posso risolvere il problema? Stesso stessi parametri sorgente e sta lavorando in Windows.

Grazie.

È stato utile?

Soluzione

Questa soluzione arriva un po 'tardi nel corso della giornata, ma è pensato per gli altri che hanno lo stesso problema.

A quanto pare, la soluzione accettata di aggiungere webserviceclient + ssl.jar alle opere classpath, dal momento che il WebLogic client completo - wlfullclient.jar ha riferimenti ad altri JAR nel suo file MANIFEST.MF. L'aggiunta del JAR webservices client risolve il problema, dal momento che sembra avere il set minimo di classi richieste per il corretto funzionamento del client quando si utilizza SSL / TLS. L'errore è di solito riscontrato quando le copie del wlfullclient.jar e wlcipher.jar sono realizzati in una directory diversa, e ha aggiunto al classpath. La JVM poi non riesce a caricare altre classi dipendenti dalla JAR cui si fa riferimento all'interno del file manifesto.

La soluzione reale sarebbe quello di aggiungere il wlfullclient.jar che si genera nel WL_HOME \ server \ lib, al CLASSPATH. Tutti gli altri JAR dipendenti sarebbero poi essere ritirato tramite il programma di caricamento classe del caso, dal momento che i riferimenti manifeste queste attraverso percorsi di directory relative.

Altri suggerimenti

Si sta utilizzando lo stesso fornitore JVM su entrambe le macchine?

Molto probabilmente il CA utilizzato per generare l'archivio chiavi è disponibile sul truststore Windows, ma non è disponibile su Solaris, l'ipotesi di essere il keystore è stato generato in Windows e la CA non è ancora fornito con il JRE utilizzato su Solaris . Le differenze sono discussi qui .

Come configurare truststore per aggiungere una CA

Infine, abbiamo ottenuto la soluzione.

Basta aggiungere webserviceclient + ssl.jar al classpath risolverà il problema.

  • webserviceclient + ssl.jar non incluso nel wlfullclient.jar.

Sei sicuro che si keystore file viene prelevato? Forse provare a utilizzare un percorso assoluto quando si specifica l'opzione -Dweblogic.security.CustomTrustKeyStoreFileName.

Inoltre, sono il percorso di classe del client JMS davvero identici in entrambi gli ambienti?

Prova a fornire wlserver_10.3/server/lib/wlfullclient.jar (che si crea eseguendo il comando java -jar wljarbuilder.jar) e wlserver_10.3/server/lib/wlcipher.jar (sì, wlfullclient.jar non è che la piena!) Nel classpath.

Questa è stata semplificata per la 10.3.4 e superiori Weblogic.

È sufficiente aggiungere il wlthint3client.jar dalla directory / server / lib al classpath del vostro cliente

Ho confermato solo questo funziona per la comunicazione EJB ma lo stato docs

  

Questa versione supporta il seguente:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top