Question

Quand je tente de me connecter Weblogic protocole T3S dans Solaris Server, il affiche cette erreur:

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)

Je définir les paramètres suivants:

-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

Comment puis-je résoudre ce problème? Même source et les mêmes paramètres travaille sous Windows.

Merci.

Était-ce utile?

La solution

Cette solution est un peu tard dans la journée, mais est destiné à d'autres ayant le même problème.

Apparemment, la solution retenue d'ajouter webserviceclient + ssl.jar aux travaux classpath, depuis le WebLogic client complet - wlfullclient.jar a des références à d'autres fichiers JAR dans son fichier MANIFEST.MF. Ajout du client webservices JAR résout le problème, car il semble avoir l'ensemble minimal de classes nécessaires au bon fonctionnement du client lors de l'utilisation de SSL / TLS. L'erreur est généralement rencontrée lorsque des copies du wlfullclient.jar et wlcipher.jar sont faits dans un répertoire différent, et ajouté à la classpath. La machine virtuelle Java ne parvient pas à charger d'autres classes dépendantes de JARs qui sont référencés dans le fichier manifest.

La solution réelle serait d'ajouter le wlfullclient.jar qui est généré dans le WL_HOME \ server \ lib, au CLASSPATH. Tous les autres JARs dépendants seraient alors pris en charge par le classloader approprié, étant donné que les références manifestes par ces chemins d'accès relatifs.

Autres conseils

Utilisez-vous le même fournisseur de machine virtuelle Java sur les deux machines?

Très probablement le CA utilisé pour générer le fichier de clés est disponible sur le truststore Windows mais pas disponible sur Solaris, l'hypothèse étant le keystore a été générée dans Windows et le CA n'a pas encore été livré avec le JRE utilisé sur Solaris . Les différences sont discutées .

Comment configure truststore pour ajouter un CA

Enfin, nous avons la solution.

Il suffit d'ajouter webserviceclient + ssl.jar à votre classpath va résoudre le problème.

  • webserviceclient + ssl.jar pas inclus dans wlfullclient.jar.

Êtes-vous sûr que vous keystore fichier est ramassé? Peut-être essayer d'utiliser un chemin absolu lorsque vous spécifiez l'option -Dweblogic.security.CustomTrustKeyStoreFileName.

En outre, sont les classpath du client JMS vraiment identique dans les deux environnements?

Essayez de fournir wlserver_10.3/server/lib/wlfullclient.jar (que vous créez en exécutant la commande java -jar wljarbuilder.jar) et wlserver_10.3/server/lib/wlcipher.jar (ouais, wlfullclient.jar est pas plein!) Sur le chemin de classe.

Cela a été simplifié pour 10.3.4 et au-dessus Weblogic.

Il suffit d'ajouter le wlthint3client.jar du / server / lib Classpath de votre client

Je n'ai confirmé que cela fonctionne pour la communication ejb mais l'état docs

  

Cette version prend en charge les éléments suivants:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top