2012-10-20 36 views
21

हमारे पास एक जावा सॉकेट सर्वर एक एसएसएल सॉकेट (पोर्ट 443) और एक आईओएस एप्लिकेशन को सुनता है जो इसके साथ जुड़ता है। जब आईओएस 5.1पर चल रहा है, आवेदन जब हम 1.6 (या 1.7) को JDK 1.5 से सर्वर जावा संस्करण के लिए उन्नत काम करना बंद कर। ऐप आईओएस 6 पर चलते समय जेडीके 5 और 6 तक ठीक जुड़ा है।आईओएस 5 जेडीके 1.6 चलाने वाले सर्वर से कनेक्ट करने में विफल क्यों होता है, लेकिन जेडीके 1.5

आईओएस ऐप एक त्रुटि की रिपोर्ट कर रहा है: -9809 = errSSLCrypto। जावा पक्ष पर, हमें javax.net.ssl.SSLException: Received fatal alert: close_notify मिलते हैं।

जावा सर्वर पक्ष पर, हमने सभी उपलब्ध साइफर सूट सक्षम किए हैं। क्लाइंट साइड पर हमने कई अलग-अलग सूट सक्षम करने का परीक्षण किया है, हालांकि हमने अभी तक प्रत्येक व्यक्ति को व्यक्तिगत रूप से सक्षम एक परीक्षण पूरा नहीं किया है। फिलहाल, यह असफल हो रहा है जब हम TLS_DH_anon_WITH_AES_128_CBC_SHA का उपयोग करते हैं हालांकि यह दूसरों के साथ विफल रहा है और हम यह सोचने लगे हैं कि यह सूट नहीं है।

यहां डीबग आउटपुट है। यह ServerHelloDone सभी तरह बना देता है और फिर विफल रहता है उसके बाद शीघ्र ही:

Is secure renegotiation: false 
[Raw read]: length = 5 
0000: 16 03 03 00 41          ....A 
[Raw read]: length = 65 
0000: 01 00 00 3D 03 03 50 83 1E 0B 56 19 25 65 C8 F2 ...=..P...V.%e.. 
0010: AF 02 AD 48 FE E2 92 CF B8 D7 A6 A3 EA C5 FF 5D ...H...........] 
0020: 74 0F 1B C1 99 18 00 00 08 00 FF 00 34 00 1B 00 t...........4... 
0030: 18 01 00 00 0C 00 0D 00 08 00 06 05 01 04 01 02 ................ 
0040: 01             . 
URT-, READ: Unknown-3.3 Handshake, length = 65 
*** ClientHello, Unknown-3.3 
RandomCookie: GMT: 1333992971 bytes = { 86, 25, 37, 101, 200, 242, 175, 2, 173, 72, 254, 226, 146, 207, 184, 215, 166, 163, 234, 197, 255, 93, 116, 15, 27, 193, 153, 24 } 
Session ID: {} 
Cipher Suites: [TLS_EMPTY_RENEGOTIATION_INFO_SCSV, TLS_DH_anon_WITH_AES_128_CBC_SHA, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_RC4_128_MD5] 
Compression Methods: { 0 } 
Unsupported extension signature_algorithms, data: 00:06:05:01:04:01:02:01 
*** 
[read] MD5 and SHA1 hashes: len = 65 
0000: 01 00 00 3D 03 03 50 83 1E 0B 56 19 25 65 C8 F2 ...=..P...V.%e.. 
0010: AF 02 AD 48 FE E2 92 CF B8 D7 A6 A3 EA C5 FF 5D ...H...........] 
0020: 74 0F 1B C1 99 18 00 00 08 00 FF 00 34 00 1B 00 t...........4... 
0030: 18 01 00 00 0C 00 0D 00 08 00 06 05 01 04 01 02 ................ 
0040: 01             . 
%% Created: [Session-1, TLS_DH_anon_WITH_AES_128_CBC_SHA] 
*** ServerHello, TLSv1 
RandomCookie: GMT: 1333992972 bytes = { 100, 3, 56, 153, 7, 2, 251, 64, 41, 32, 66, 240, 227, 181, 55, 190, 2, 237, 146, 0, 73, 119, 70, 0, 160, 9, 28, 207 } 
Session ID: {80, 131, 30, 12, 241, 73, 52, 38, 46, 41, 237, 226, 199, 246, 156, 45, 3, 247, 182, 43, 223, 8, 49, 169, 188, 63, 160, 41, 102, 199, 50, 190} 
Cipher Suite: TLS_DH_anon_WITH_AES_128_CBC_SHA 
Compression Method: 0 
Extension renegotiation_info, renegotiated_connection: <empty> 
*** 
Cipher suite: TLS_DH_anon_WITH_AES_128_CBC_SHA 
*** Diffie-Hellman ServerKeyExchange 
DH Modulus: { 233, 230, 66, 89, 157, 53, 95, 55, 201, 127, 253, 53, 103, 18, 11, 142, 37, 201, 205, 67, 233, 39, 179, 169, 103, 15, 190, 197, 216, 144, 20, 25, 34, 210, 195, 179, 173, 36, 128, 9, 55, 153, 134, 157, 30, 132, 106, 171, 73, 250, 176, 173, 38, 210, 206, 106, 34, 33, 157, 71, 11, 206, 125, 119, 125, 74, 33, 251, 233, 194, 112, 181, 127, 96, 112, 2, 243, 206, 248, 57, 54, 148, 207, 69, 238, 54, 136, 193, 26, 140, 86, 171, 18, 122, 61, 175 } 
DH Base: { 48, 71, 10, 213, 160, 5, 251, 20, 206, 45, 157, 205, 135, 227, 139, 199, 209, 177, 197, 250, 203, 174, 203, 233, 95, 25, 10, 167, 163, 29, 35, 196, 219, 188, 190, 6, 23, 69, 68, 64, 26, 91, 44, 2, 9, 101, 216, 194, 189, 33, 113, 211, 102, 132, 69, 119, 31, 116, 186, 8, 77, 32, 41, 216, 60, 28, 21, 133, 71, 243, 169, 241, 162, 113, 91, 226, 61, 81, 174, 77, 62, 90, 31, 106, 112, 100, 243, 22, 147, 58, 52, 109, 63, 82, 146, 82 } 
Server DH Public Key: { 8, 60, 59, 13, 224, 110, 32, 168, 116, 139, 246, 146, 15, 12, 216, 107, 82, 182, 140, 80, 193, 237, 159, 189, 87, 34, 18, 197, 181, 252, 26, 27, 94, 160, 188, 162, 30, 29, 165, 165, 68, 152, 11, 204, 251, 187, 14, 233, 239, 103, 134, 168, 181, 173, 206, 151, 197, 128, 65, 239, 233, 191, 29, 196, 93, 80, 217, 55, 81, 240, 101, 31, 119, 98, 188, 211, 52, 146, 168, 127, 127, 66, 63, 111, 198, 134, 70, 213, 31, 162, 146, 25, 178, 79, 56, 116 } 
Anonymous 
*** ServerHelloDone 
[write] MD5 and SHA1 hashes: len = 383 
0000: 02 00 00 4D 03 01 50 83 1E 0C 64 03 38 99 07 02 ...M..P...d.8... 
0010: FB 40 29 20 42 F0 E3 B5 37 BE 02 ED 92 00 49 77 [email protected]) B...7.....Iw 
0020: 46 00 A0 09 1C CF 20 50 83 1E 0C F1 49 34 26 2E F..... P....I4&. 
0030: 29 ED E2 C7 F6 9C 2D 03 F7 B6 2B DF 08 31 A9 BC ).....-...+..1.. 
0040: 3F A0 29 66 C7 32 BE 00 34 00 00 05 FF 01 00 01 ?.)f.2..4....... 
0050: 00 0C 00 01 26 00 60 E9 E6 42 59 9D 35 5F 37 C9 ....&.`..BY.5_7. 
0060: 7F FD 35 67 12 0B 8E 25 C9 CD 43 E9 27 B3 A9 67 ..5g...%..C.'..g 
0070: 0F BE C5 D8 90 14 19 22 D2 C3 B3 AD 24 80 09 37 ......."....$..7 
0080: 99 86 9D 1E 84 6A AB 49 FA B0 AD 26 D2 CE 6A 22 .....j.I...&..j" 
0090: 21 9D 47 0B CE 7D 77 7D 4A 21 FB E9 C2 70 B5 7F !.G...w.J!...p.. 
00A0: 60 70 02 F3 CE F8 39 36 94 CF 45 EE 36 88 C1 1A `p....96..E.6... 
00B0: 8C 56 AB 12 7A 3D AF 00 60 30 47 0A D5 A0 05 FB .V..z=..`0G..... 
00C0: 14 CE 2D 9D CD 87 E3 8B C7 D1 B1 C5 FA CB AE CB ..-............. 
00D0: E9 5F 19 0A A7 A3 1D 23 C4 DB BC BE 06 17 45 44 ._.....#......ED 
00E0: 40 1A 5B 2C 02 09 65 D8 C2 BD 21 71 D3 66 84 45 @.[,..e...!q.f.E 
00F0: 77 1F 74 BA 08 4D 20 29 D8 3C 1C 15 85 47 F3 A9 w.t..M).<...G.. 
0100: F1 A2 71 5B E2 3D 51 AE 4D 3E 5A 1F 6A 70 64 F3 ..q[.=Q.M>Z.jpd. 
0110: 16 93 3A 34 6D 3F 52 92 52 00 60 08 3C 3B 0D E0 ..:4m?R.R.`.<;.. 
0120: 6E 20 A8 74 8B F6 92 0F 0C D8 6B 52 B6 8C 50 C1 n .t......kR..P. 
0130: ED 9F BD 57 22 12 C5 B5 FC 1A 1B 5E A0 BC A2 1E ...W"......^.... 
0140: 1D A5 A5 44 98 0B CC FB BB 0E E9 EF 67 86 A8 B5 ...D........g... 
0150: AD CE 97 C5 80 41 EF E9 BF 1D C4 5D 50 D9 37 51 .....A.....]P.7Q 
0160: F0 65 1F 77 62 BC D3 34 92 A8 7F 7F 42 3F 6F C6 .e.wb..4....B?o. 
0170: 86 46 D5 1F A2 92 19 B2 4F 38 74 0E 00 00 00  .F......O8t.... 
URT-, WRITE: TLSv1 Handshake, length = 383 
[Raw write]: length = 388 
0000: 16 03 01 01 7F 02 00 00 4D 03 01 50 83 1E 0C 64 ........M..P...d 
0010: 03 38 99 07 02 FB 40 29 20 42 F0 E3 B5 37 BE 02 [email protected]) B...7.. 
0020: ED 92 00 49 77 46 00 A0 09 1C CF 20 50 83 1E 0C ...IwF..... P... 
0030: F1 49 34 26 2E 29 ED E2 C7 F6 9C 2D 03 F7 B6 2B .I4&.).....-...+ 
0040: DF 08 31 A9 BC 3F A0 29 66 C7 32 BE 00 34 00 00 ..1..?.)f.2..4.. 
0050: 05 FF 01 00 01 00 0C 00 01 26 00 60 E9 E6 42 59 .........&.`..BY 
0060: 9D 35 5F 37 C9 7F FD 35 67 12 0B 8E 25 C9 CD 43 .5_7...5g...%..C 
0070: E9 27 B3 A9 67 0F BE C5 D8 90 14 19 22 D2 C3 B3 .'..g......."... 
0080: AD 24 80 09 37 99 86 9D 1E 84 6A AB 49 FA B0 AD .$..7.....j.I... 
0090: 26 D2 CE 6A 22 21 9D 47 0B CE 7D 77 7D 4A 21 FB &..j"!.G...w.J!. 
00A0: E9 C2 70 B5 7F 60 70 02 F3 CE F8 39 36 94 CF 45 ..p..`p....96..E 
00B0: EE 36 88 C1 1A 8C 56 AB 12 7A 3D AF 00 60 30 47 .6....V..z=..`0G 
00C0: 0A D5 A0 05 FB 14 CE 2D 9D CD 87 E3 8B C7 D1 B1 .......-........ 
00D0: C5 FA CB AE CB E9 5F 19 0A A7 A3 1D 23 C4 DB BC ......_.....#... 
00E0: BE 06 17 45 44 40 1A 5B 2C 02 09 65 D8 C2 BD 21 [email protected][,..e...! 
00F0: 71 D3 66 84 45 77 1F 74 BA 08 4D 20 29 D8 3C 1C q.f.Ew.t..M).<. 
0100: 15 85 47 F3 A9 F1 A2 71 5B E2 3D 51 AE 4D 3E 5A ..G....q[.=Q.M>Z 
0110: 1F 6A 70 64 F3 16 93 3A 34 6D 3F 52 92 52 00 60 .jpd...:4m?R.R.` 
0120: 08 3C 3B 0D E0 6E 20 A8 74 8B F6 92 0F 0C D8 6B .<;..n .t......k 
0130: 52 B6 8C 50 C1 ED 9F BD 57 22 12 C5 B5 FC 1A 1B R..P....W"...... 
0140: 5E A0 BC A2 1E 1D A5 A5 44 98 0B CC FB BB 0E E9 ^.......D....... 
0150: EF 67 86 A8 B5 AD CE 97 C5 80 41 EF E9 BF 1D C4 .g........A..... 
0160: 5D 50 D9 37 51 F0 65 1F 77 62 BC D3 34 92 A8 7F ]P.7Q.e.wb..4... 
0170: 7F 42 3F 6F C6 86 46 D5 1F A2 92 19 B2 4F 38 74 .B?o..F......O8t 
0180: 0E 00 00 00          .... 
[Raw read]: length = 5 
0000: 15 03 01 00 02          ..... 
[Raw read]: length = 2 
0000: 02 00            .. 
URT-, READ: TLSv1 Alert, length = 2 
URT-, RECV TLSv1 ALERT: fatal, close_notify 
URT-, called closeSocket() 
URT-, handling exception: javax.net.ssl.SSLException: Received fatal alert: close_notify 

FYI करें, यह आईओएस में काम करता है 6.0

+2

आपको Apple App प्रकाशन तंत्र में गुमनाम सिफ़र सुइट का उपयोग करने की अनुमति है? – Bruno

+0

@ ब्रूनो, मुझे लगता है कि हां यही कारण है कि यह आईओएस 5 - जावा 5 पर काम कर रहा है। लेकिन जब हम जावा संस्करण को हमारे सर्वर पर 6 में अपग्रेड करते हैं तो विफल रहता है। –

+1

जावा संस्करण समस्या के बारे में निश्चित नहीं है, मुझे आश्चर्य है कि ऐप्पल ऐन सिफर का उपयोग करने वाले ऐप को स्वीकार करेगा, क्योंकि जहां तक ​​मैं समझता हूं, वे उन ऐप्स को अस्वीकार करते हैं जो प्रमाण पत्र सत्यापन अक्षम करते हैं। Anon सिफर सुइट्स कम या ज्यादा समान हैं। जब यह भी काम करता है तो ट्रेस देखना दिलचस्प होगा। क्या आपने अन्य सिफर सुइट्स को मजबूर करने की कोशिश की है ('TLS_DH_anon_WITH_AES_128_CBC_SHA' यहां चुना गया है)? – Bruno

उत्तर

1

आप जावा सर्वर और आयात करने के लिए से एक 'नई' स्व हस्ताक्षरित प्रमाणपत्र निर्यात करने की कोशिश की है आपके ऐप/ओएस की ट्रस्ट स्टोर?

+0

हमने कोशिश की लेकिन ग्राहक अस्वीकार कर दिया प्रमाण पत्र मुझे यकीन नहीं है कि हमारे द्वारा बनाए गए प्रमाण को सर्वर के होस्टनाम से सही ढंग से मेल किया गया था या नहीं। मुझे यह भी यकीन नहीं है कि आईफोन पर प्रमाण जमा करने के बाद यह मायने रखता है या नहीं। –

+0

यदि डिवाइस ने प्रमाण को खारिज कर दिया है, तो इसमें कुछ गड़बड़ है .. क्या आप regen और एक बार कोशिश कर सकते हैं .. और मुझे लगता है कि यह महत्वपूर्ण है, एसएसएल कनेक्शन सर्वर सत्यापन के लिए अनिवार्य है और केवल ट्रस्ट स्टोर में वैध प्रमाण के लिए, डिवाइस करेगा एक जुड़ाव। – Srijit

0

क्या मैं आपके जावा एप्लिकेशन सर्वर के सामने अपाचे या अन्य HTTP (एस) सर्वर का उपयोग करने का सुझाव दे सकता हूं? बस भविष्य में सोचने के लिए शायद आपके आवेदन में जावा को सीधे सभी अनुरोधों की सेवा नहीं होगी (टीएलएस सुरक्षा सुधार, भार संतुलन, विफलता आदि के बारे में सोचें)। मेरे दो सेंट।

1

यदि ऐप जेडीके 5 के साथ काम करता है, तो मैं सुझाव देता हूं कि जेडीके 6 के साथ एक ही परीक्षण दोहराएं और दो लॉग फाइलों की तुलना करें: यह स्पष्ट होना चाहिए कि वास्तविक मतभेद कहां हैं।

अपने डीबग लॉग का निरीक्षण करने से सर्वर कह रहा है कि ग्राहक एक घातक close_notify संदेश दे रहा है, और इस वजह से सर्वर तुरंत कनेक्शन बंद कर देता है, और कहा कि सही सर्वर व्यवहार है।

7.2.1. Closure Alerts

The client and the server must share knowledge that the connection is ending in order to avoid a truncation attack. Either party may initiate the exchange of closing messages.

close_notify This message notifies the recipient that the sender will not send any more messages on this connection. Note that as of TLS 1.1, failure to properly close a connection no longer requires that a session not be resumed. This is a change from TLS 1.0 to conform with widespread implementation practice.

Either party may initiate a close by sending a close_notify alert. Any data received after a closure alert is ignored. Unless some other fatal alert has been transmitted, each party is required to send a close_notify alert before closing the write side of the connection. The other party MUST respond with a close_notify alert of its own and close down the connection immediately, discarding any pending writes. It is not required for the initiator of the close to wait for the responding close_notify alert before closing the read side of the connection.

TLS_DH_anon_WITH_AES_128_CBC_SHA बारे में, कृपया ध्यान दें JDK6u29 में प्रतिगमन ठीक है कि TLS_DH_anon_WITH_AES_128_CBC_SHA का उपयोग कर तोड़ दिया एसएसएल कनेक्टिविटी नहीं थी। यहाँ और जानकारी:

http://www.oracle.com/technetwork/java/javase/documentation/overview-137139.html http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7103725