2016-11-27 9 views
5

मेरी XPages आवेदन में करने के लिए निम्न अपवाद उठाया है जब मैं किसी अन्य सर्वर जो केवल TLSv1 और नए (कोई SSLv3) की अनुमति देता है के लिए एक HTTPS कनेक्शन को खोलने का प्रयास:SSLHandshakeException कारण डोमिनोज़ में लापता टीएलएस सिफ़र सुइट JVM

javax.net.ssl.SSLHandshakeException: No appropriate protocol 

स्थापना javax.net.debug=ssl:handshake यह अतिरिक्त जानकारी प्रदान करता है:

SSLContextImpl: Using X509ExtendedKeyManager com.ibm.jsse2.hd 
SSLContextImpl: Using X509TrustManager com.ibm.jsse2.pc 
IBMJSSE2 will ignore com.ibm.jsse2.overrideDefaultProtocol since was set to a non recognized value TLSv1 
Installed Providers = IBMJSSE2, IBMJCE, IBMJGSSProvider, IBMCertPath, IBMSASL, IBMXMLCRYPTO, IBMXMLEnc, Policy, IBMSPNEGO 
JsseJCE: Using SecureRandom IBMSecureRandom from provider IBMJCE version 1.2 
trigger seeding of SecureRandom 
done seeding SecureRandom 
IBMJSSE2 will enable CBC protection 
IBMJSSE2 to send SCSV Cipher Suite on initial ClientHello 
JsseJCE: Using SecureRandom IBMSecureRandom from provider IBMJCE version 1.2 
IBMJSSE2 will allow RFC 5746 renegotiation per com.ibm.jsse2.renegotiate set to none or default 
IBMJSSE2 will not require renegotiation indicator during initial handshake per com.ibm.jsse2.renegotiation.indicator set to OPTIONAL or default taken 
IBMJSSE2 will not perform identity checking against the peer cert check during renegotiation per com.ibm.jsse2.renegotiation.peer.cert.check set to OFF or default 
IBMJSSE2 will not allow unsafe server certificate change during renegotiation per jdk.tls.allowUnsafeServerCertChange set to FALSE or default 
Is initial handshake: true 
JsseJCE: Using KeyAgreement ECDH from provider IBMJCE version 1.2 
JsseJCE: Using signature SHA1withECDSA from provider TBD via init 
JsseJCE: Using signature NONEwithECDSA from provider TBD via init 
JsseJCE: Using KeyFactory EC from provider IBMJCE version 1.2 
JsseJCE: Using KeyPairGenerator EC from provider TBD via init 
JsseJce: EC is available 
Ignoring disabled cipher suite: SSL_RENEGO_PROTECTION_REQUEST for TLSv1 
No available cipher suite for TLSv1 
Thread-8, handling exception: javax.net.ssl.SSLHandshakeException: No appropriate protocol 
Thread-8, SEND TLSv1 ALERT: fatal, 
description = handshake_failure 

मुख्य समस्या "नहीं TLSv1 के लिए उपलब्ध सिफ़र सुइट" हो रहा है।

SSL सर्वर सॉकेट कारखाने (SSLServerSocketFactory.getDefault()) से डिफ़ॉल्ट और समर्थित सिफ़र सुइट (getDefaultCipherSuites()/getSupportedCipherSuites()) हो रही है पता चलता है कि केवल SSL सिफ़र सुइट डोमिनोज़ JVM में उपलब्ध हैं, लेकिन टीएलएस के लिए कोई नहीं।

कोड जो मैं HTTPS कनेक्शन स्थापित करने के लिए उपयोग कर रहा हूं वह टीएलएस सिफर सूट के साथ गैर-डोमिनोज़ जेवीएम में ठीक काम करता है।

क्या कोई मुझे बता सकता है कि डोमिनोज़ जेवीएम में टीएलएस सिफर सूट कैसे उपलब्ध कराया जाए? या आम तौर पर मेरी मदद करते हैं यदि कोई अलग समस्या है और मैंने डीबग जानकारी का गलत व्याख्या किया है?


अतिरिक्त जानकारी:

डोमिनोज़ संस्करण: 9.0.1 FP7

जावा रनटाइम संस्करण: pwa6460sr16fp30-20160726_01 (SR16 FP30)

JVM संस्करण : जेआरई 1.6.0 आईबीएम जे 9 2.4 विंडोज 7 amd64-64 jvmwa6460sr16f p30-20160725_312906 (JIT सक्षम, AOT सक्षम) J9VM - 20160725_312906 JIT - r9_20160725_121766 जीसी - GA24_Java6_SR16_20160725_1417_B312906

अप्रतिबंधित JCE नीति फ़ाइलों डोमिनोज़ JVM में स्थापित किया गया है।

+0

टीएलएसवी 1 एक प्रोटोकॉल है, सिफर सूट नहीं। – EJP

+0

@EJP: मुझे पता है, लेकिन विभिन्न प्रोटोकॉल के लिए अलग सिफर सुइट्स हैं। मेरे मामले में टीएलएसवी 1 के लिए कोई सिफर स्वीट उपलब्ध नहीं है। –

+0

डोमिनोज़ जेवीएम संस्करण 1.6 होने के साथ मुझे लगता है कि आपके लिए आवश्यक टीएलएस संस्करण के लिए उस जेवीएम संस्करण में कोई समर्थन उपलब्ध नहीं है। आईबीएम ने जेवीएम को अपग्रेड करने का वादा किया है - नवीनतम डिलीवरी वादा पहली तिमाही 2017 है। इस बीच मुझे लगता है कि वर्कअराउंड सबसे अच्छा है जो आप कर सकते हैं। यदि आप पहले से नहीं हैं, तो इन लेखों पर नज़र डालें: https://www-10.lotus.com/ldd/dominowiki.nsf/dx/TLS_1.2 और http://www-01.ibm.com/ समर्थन/docview.wss? uid = swg21985289 – jpishko

उत्तर

2

समस्या how some Java SDKs limit the available cipher suites से संबंधित प्रतीत होती है। उदाहरण के लिए, Dropbox Java SDK, सिफर सूट नामों की हार्ड-कोडेड सूची का उपयोग करता है जो सभी "TLS_" से शुरू होते हैं। डोमिनोज़ जेवीएम में, हालांकि, सभी सिफर सूट नाम "SSL_" से शुरू होते हैं। नतीजतन, सभी सिफर सुइट्स बनाए गए एसएसएल सॉकेट में अक्षम हो जाते हैं क्योंकि उनके कोई भी नाम मेल नहीं खाता है।