Pregunta

Cuando intento conectar el protocolo WebLogic T3S en el servidor Solaris, muestra este error:

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)

He definido los siguientes parámetros:

-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

¿Cómo puedo arreglarlo? La misma fuente y el mismo parámetros está funcionando en Windows.

Gracias.

¿Fue útil?

Solución

Esta solución llega un poco tarde en el día, pero está destinada a que otros tienen el mismo problema.

Aparentemente, la solución aceptada de agregar WebServiceClient+SSL.JAR a las obras de classpath, ya que el cliente completo de WebLogic - wlfullClient.jar tiene referencias a otros frascos en su archivo manifest.mf. Agregar el JAR del cliente WebServices resuelve el problema, ya que parece tener el conjunto mínimo de clases requeridas para el funcionamiento correcto del cliente cuando se usa SSL/TLS. El error generalmente se encuentra cuando las copias de WlfullClient.jar y wlcipher.jar se realizan en un directorio diferente y se agregan a la clase. El JVM luego no puede cargar otras clases dependientes de los frascos a los que se hace referencia desde el archivo manifiesto.

La solución real sería agregar wlfullClient.jar que se genera en el WL_HOMEServidor Lib Directory, al classpath. Todos los demás frascos dependientes se recogerían a través del cargador de clases apropiado, ya que el manifiesto hace referencia a través de rutas de directorio relativo.

Otros consejos

¿Estás usando el mismo proveedor JVM en ambas máquinas?

Lo más probable es que la CA utilice para generar el almacén de claves esté disponible en Windows Truststore pero no está disponible en Solaris, La suposición de que es el almacén de claves se generó en Windows y la CA aún no se envía con el JRE que se usa en Solaris. Se discuten las diferencias aquí.

Cómo configurar la tienda de confianza para agregar una CA

Finalmente, obtuvimos la solución.

Simplemente agregue WebServiceClient+SSL.JAR a su classpath resolverá el problema.

  • WebServiceClient+ssl.jar no incluido en wlfullClient.jar.

¿Estás seguro de que tu keystore el archivo se recoge? Tal vez intente usar una ruta absoluta al especificar el -Dweblogic.security.CustomTrustKeyStoreFileName opción.

Además, ¿el Clase de Cliente JMS es realmente idéntico en ambos entornos?

Intenta proporcionar wlserver_10.3/server/lib/wlfullclient.jar (que creas ejecutando el comando java -jar wljarbuilder.jar) y wlserver_10.3/server/lib/wlcipher.jar (sí, wlfullclient.jar ¡No está tan lleno!) En el classpath.

Esto se ha simplificado para 10.3.4 y por encima de WebLogic.

Simplemente agregue Wlthint3client.jar desde el directorio /servidor /lib a la classpath de su cliente

Solo confirmé que esto funciona para EJB Communication, pero los documentos están bien

Esta versión admite lo siguiente:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top