سؤال

عندما أحاول توصيل بروتوكول Weblogic T3S في Solaris Server، فهو يعرض هذا الخطأ:

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

كيف يمكنني إصلاح ذلك؟ نفس المصدر ونفس المعلمات تعمل في ويندوز.

شكرا.

هل كانت مفيدة؟

المحلول

يأتي هذا الحل متأخرا بعض الشيء في اليوم، لكنه مخصص للآخرين لديهم نفس المشكلة.

على ما يبدو، الحل المقبول لإضافة WebServiceclient + SSL.JAR إلى Works ClassPath، نظرا لأن Weblogic Full Client - WLFULLCLIENT.JAR لديه إشارات إلى الجرار الأخرى في ملف manifest.mf الخاص به. إضافة جرة عميل WebServices يحل المشكلة، نظرا لأنه يبدو أن الحد الأدنى لمجموعة الطبقات المطلوبة للتشغيل الصحيح للعميل عند استخدام SSL / TLS. يتم تصديب الخطأ عادة عند إجراء نسخ من WlfullClient.jar و Wlcipher.jar في دليل مختلف، وإضافتها إلى ClassPath. ثم يفشل JVM في تحميل فصول أخرى تعتمد من الجرار المشار إليها من داخل ملف البيان.

سيكون الحل الفعلي هو إضافة Wlfullclient.jar الذي يتم إنشاؤه في WL_HOME.دليل خادم LIB، إلى ClassPath. سيتم بعد ذلك التقاط جميع الجرار المعالين الأخرى عن طريق الفصل الدراسي المناسب، لأن البيان يشير إلى هذه المسارات الدليل النسبية.

نصائح أخرى

هل تستخدم نفس بائع JVM على كلا الجهازين؟

على الأرجح أن CA المستخدمة لتوليد Keystore متوفر على Windows TrustStore ولكن غير متوفر على Solaris، تم إنشاء الافتراض الذي تم إنشاؤه في Windows ولم يتم شحن المرجع المصدف المرآية المرجعية باستخدام JRE المستخدمة في Solaris. وبعد تتم مناقشة الاختلافات هنا.

كيف تهيئة TrustStore لإضافة CA

أخيرا، حصلنا على الحل.

فقط أضف webserviceclient + ssl.jar إلى classpath الخاص بك سوف يحل المشكلة.

  • webserviceclient + ssl.jar غير المدرجة في Wlfullclient.jar.

هل أنت متأكد من أنك keystore يتم التقاط الملف؟ ربما حاول استخدام المسار المطلق عند تحديد -Dweblogic.security.CustomTrustKeyStoreFileName اختيار.

أيضا، هي ClassPath من عميل JMS متطابق حقا في كلا البيئة؟

محاولة تقديم wlserver_10.3/server/lib/wlfullclient.jar (أن تنشئ عن طريق تشغيل الأمر java -jar wljarbuilder.jar) و wlserver_10.3/server/lib/wlcipher.jar (بلى، wlfullclient.jar ليس هذا ممتلئا!) على classpath.

وقد تم تبسيط ذلك لمدة 10.3.4 وما فوق Weblogic.

ما عليك سوى إضافة wlthint3client.jar من الدليل / الخادم / LIB إلى ClassPath الخاص بالعميل

لقد أكدت فقط هذا يعمل من أجل اتصال 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top