2

Solaris Server で Weblogic t3s プロトコルに接続しようとすると、次のエラーが表示されます。

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)

次のパラメータを定義しました。

-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

どうすれば修正できますか?同じソースと同じパラメータが Windows で動作しています。

ありがとうございました。

4

5 に答える 5

2

この解決策は少し遅くなりますが、同じ問題を抱えている他の人を対象としています.

どうやら、webserviceclient+ssl.jar をクラスパスに追加するという受け入れられたソリューションが機能するようです。これは、WebLogic フル クライアント - wlfullclient.jar がその MANIFEST.MF ファイル内の他の JAR への参照を持っているためです。Web サービス クライアント JAR を追加すると、問題が解決します。これは、SSL/TLS を使用する場合にクライアントが正しく動作するために必要な最小限のクラス セットが含まれているように見えるためです。このエラーは通常、wlfullclient.jar と wlcipher.jar のコピーが別のディレクトリに作成され、クラスパスに追加されたときに発生します。その後、JVM は、MANIFEST ファイル内から参照される JAR から他の依存クラスをロードできません。

実際の解決策は、WL_HOME \server\lib ディレクトリに生成された wlfullclient.jar を CLASSPATH に追加することです。マニフェストは相対ディレクトリ パスを介してこれらを参照するため、他のすべての依存 JAR は、適切なクラスローダーを介して取得されます。

于 2010-04-06T21:27:09.663 に答える
1

最後に、私たちは解決策を得ました。

クラスパスにwebserviceclient+ssl.jarを追加するだけで、問題が解決します。

  • webserviceclient+ssl.jarはwlfullclient.jarに含まれていません。
于 2010-01-14T03:30:17.173 に答える
0

keystoreファイルが取得されていることを確認しますか? -Dweblogic.security.CustomTrustKeyStoreFileNameオプションを指定するときは、絶対パスを使用してみてください。

また、JMS クライアントのクラスパスは両方の環境で本当に同一ですか?

wlserver_10.3/server/lib/wlfullclient.jar(コマンドを実行して作成したものjava -jar wljarbuilder.jar) wlserver_10.3/server/lib/wlcipher.jar(そうwlfullclient.jarです、それほどいっぱいではありません!) をクラスパスに指定してみてください。

于 2010-01-12T13:32:28.853 に答える
0

これは、10.3.4 以降の Weblogic では簡略化されています。

/server/lib ディレクトリから wlthint3client.jar をクライアントのクラスパスに追加するだけです。

これがejb通信で機能することを確認しただけですが、ドキュメントの状態

このリリースでは、次がサポートされています。

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

于 2013-07-12T18:27:14.790 に答える