Unable to send data back from server via SSL.
843811Aug 27 2002 — edited Sep 7 2002I've written a client/server application to send UTF-8 encoding text data back and forth via HTTP. The client sends a text request, the server processes it and then sends a text response. I wrote two simple methods that take a stream and either read or send data. Both the client and the server use the same send and read methods. The code executes and works correctly with plain sockets, but when I sub-classed the HTTP client and server classes to create SSL (HTTPS) sockets the request gets sent, the server processes it and as soon as it sends any data back to the client, the input stream on the client says first line it reads off is null and I can't read the response.
I'm creating a BufferedReader and BufferedWriter to read and write on the streams. When I set debug=ssl I get the following:
*** ClientHello, v3.1
RandomCookie: GMT: 1030490427 bytes = { 1, 218, 129, 245, 95, 145, 25, 255, 237
, 53, 226, 102, 79, 67, 220, 18, 118, 174, 184, 134, 61, 14, 252, 246, 80, 123,
171, 223 }
Session ID: {}
Cipher Suites: { 0, 5, 0, 4, 0, 9, 0, 10, 0, 18, 0, 19, 0, 3, 0, 17 }
Compression Methods: { 0 }
***
[write] MD5 and SHA1 hashes: len = 59
0000: 01 00 00 37 03 01 3D 6C 09 3B 01 DA 81 F5 5F 91 ...7..=l.;...._.
0010: 19 FF ED 35 E2 66 4F 43 DC 12 76 AE B8 86 3D 0E ...5.fOC..v...=.
0020: FC F6 50 7B AB DF 00 00 10 00 05 00 04 00 09 00 ..P.............
0030: 0A 00 12 00 13 00 03 00 11 01 00 ...........
main, WRITE: SSL v3.1 Handshake, length = 59
[write] MD5 and SHA1 hashes: len = 77
0000: 01 03 01 00 24 00 00 00 20 00 00 05 00 00 04 01 ....$... .......
0010: 00 80 00 00 09 06 00 40 00 00 0A 07 00 C0 00 00 .......@........
0020: 12 00 00 13 00 00 03 02 00 80 00 00 11 3D 6C 09 .............=l.
0030: 3B 01 DA 81 F5 5F 91 19 FF ED 35 E2 66 4F 43 DC ;...._....5.fOC.
0040: 12 76 AE B8 86 3D 0E FC F6 50 7B AB DF .v...=...P...
main, WRITE: SSL v2, contentType = 22, translated length = 16310
main, READ: SSL v3.1 Handshake, length = 638
*** ServerHello, v3.1
RandomCookie: GMT: 1030490427 bytes = { 142, 162, 141, 219, 193, 188, 48, 150,
234, 43, 144, 13, 250, 213, 103, 201, 123, 215, 21, 204, 180, 204, 60, 103, 243,
21, 11, 146 }
Session ID: {61, 108, 9, 59, 32, 133, 11, 126, 109, 75, 250, 159, 243, 215, 83,
152, 49, 242, 111, 207, 198, 168, 19, 141, 227, 154, 18, 214, 151, 161, 250, 99
}
Cipher Suite: { 0, 5 }
Compression Method: 0
***
%% Created: [Session-1, SSL_RSA_WITH_RC4_128_SHA]
** SSL_RSA_WITH_RC4_128_SHA
[read] MD5 and SHA1 hashes: len = 74
0000: 02 00 00 46 03 01 3D 6C 09 3B 8E A2 8D DB C1 BC ...F..=l.;......
0010: 30 96 EA 2B 90 0D FA D5 67 C9 7B D7 15 CC B4 CC 0..+....g.......
0020: 3C 67 F3 15 0B 92 20 3D 6C 09 3B 20 85 0B 7E 6D <g.... =l.; ...m
0030: 4B FA 9F F3 D7 53 98 31 F2 6F CF C6 A8 13 8D E3 K....S.1.o......
0040: 9A 12 D6 97 A1 FA 63 00 05 00 ......c...
*** Certificate chain
chain [0] = [
[
Version: V1
Subject: CN=blue, OU=blue, O=blue, L=blue, ST=blue, C=us
Signature Algorithm: MD5withRSA, OID = 1.2.840.113549.1.1.4
Key: com.sun.rsajca.JSA_RSAPublicKey@6fe26
Validity: [From: Wed Aug 21 17:09:40 PDT 2002,
To: Tue Nov 19 16:09:40 PST 2002]
Issuer: CN=blue, OU=blue, O=blue, L=blue, ST=blue, C=us
SerialNumber: [ 3d642bc4 ]
]
Algorithm: [MD5withRSA]
Signature:
0000: BE B2 B9 99 24 81 D3 9F 95 EB 4E 71 A4 74 F8 D2 ....$.....Nq.t..
0010: 82 F1 C3 2F 87 26 5C C3 56 81 3A F5 6E 78 B7 6D .../.&\.V.:.nx.m
0020: F6 F0 86 4F F9 42 3F 58 D0 79 54 25 2F 77 40 EA ...O.B?X.yT%/w@.
0030: 29 60 91 A9 69 C5 BF 7D 52 B5 E1 2A EE 1F 5F 77 )`..i...R..*.._w
0040: BF 66 7F 76 E6 02 D1 B2 57 57 93 CF 9F 37 17 80 .f.v....WW...7..
0050: 8C 43 2B D4 D9 E8 97 BB F1 49 26 0E 15 50 7C 56 .C+......I&..P.V
0060: 01 60 9A 31 67 5C 4B 15 DE 99 20 14 F4 FD 36 ED .`.1g\K... ...6.
0070: 5B C1 93 62 50 97 29 20 FD FA 5B DA 8C 7D 39 11 [..bP.) ..[...9.
]
***
stop on trusted cert: [
[
Version: V1
Subject: CN=blue, OU=blue, O=blue, L=blue, ST=blue, C=us
Signature Algorithm: MD5withRSA, OID = 1.2.840.113549.1.1.4
Key: com.sun.rsajca.JSA_RSAPublicKey@6fe26
Validity: [From: Wed Aug 21 17:09:40 PDT 2002,
To: Tue Nov 19 16:09:40 PST 2002]
Issuer: CN=blue, OU=blue, O=blue, L=blue, ST=blue, C=us
SerialNumber: [ 3d642bc4 ]
]
Algorithm: [MD5withRSA]
Signature:
0000: BE B2 B9 99 24 81 D3 9F 95 EB 4E 71 A4 74 F8 D2 ....$.....Nq.t..
0010: 82 F1 C3 2F 87 26 5C C3 56 81 3A F5 6E 78 B7 6D .../.&\.V.:.nx.m
0020: F6 F0 86 4F F9 42 3F 58 D0 79 54 25 2F 77 40 EA ...O.B?X.yT%/w@.
0030: 29 60 91 A9 69 C5 BF 7D 52 B5 E1 2A EE 1F 5F 77 )`..i...R..*.._w
0040: BF 66 7F 76 E6 02 D1 B2 57 57 93 CF 9F 37 17 80 .f.v....WW...7..
0050: 8C 43 2B D4 D9 E8 97 BB F1 49 26 0E 15 50 7C 56 .C+......I&..P.V
0060: 01 60 9A 31 67 5C 4B 15 DE 99 20 14 F4 FD 36 ED .`.1g\K... ...6.
0070: 5B C1 93 62 50 97 29 20 FD FA 5B DA 8C 7D 39 11 [..bP.) ..[...9.
]
[read] MD5 and SHA1 hashes: len = 560
0000: 0B 00 02 2C 00 02 29 00 02 26 30 82 02 22 30 82 ...,..)..&0.."0.
0010: 01 8B 02 04 3D 64 2B C4 30 0D 06 09 2A 86 48 86 ....=d+.0...*.H.
0020: F7 0D 01 01 04 05 00 30 58 31 0B 30 09 06 03 55 .......0X1.0...U
0030: 04 06 13 02 75 73 31 0D 30 0B 06 03 55 04 08 13 ....us1.0...U...
0040: 04 62 6C 75 65 31 0D 30 0B 06 03 55 04 07 13 04 .blue1.0...U....
0050: 62 6C 75 65 31 0D 30 0B 06 03 55 04 0A 13 04 62 blue1.0...U....b
0060: 6C 75 65 31 0D 30 0B 06 03 55 04 0B 13 04 62 6C lue1.0...U....bl
0070: 75 65 31 0D 30 0B 06 03 55 04 03 13 04 62 6C 75 ue1.0...U....blu
0080: 65 30 1E 17 0D 30 32 30 38 32 32 30 30 30 39 34 e0...02082200094
0090: 30 5A 17 0D 30 32 31 31 32 30 30 30 30 39 34 30 0Z..021120000940
00A0: 5A 30 58 31 0B 30 09 06 03 55 04 06 13 02 75 73 Z0X1.0...U....us
00B0: 31 0D 30 0B 06 03 55 04 08 13 04 62 6C 75 65 31 1.0...U....blue1
00C0: 0D 30 0B 06 03 55 04 07 13 04 62 6C 75 65 31 0D .0...U....blue1.
00D0: 30 0B 06 03 55 04 0A 13 04 62 6C 75 65 31 0D 30 0...U....blue1.0
00E0: 0B 06 03 55 04 0B 13 04 62 6C 75 65 31 0D 30 0B ...U....blue1.0.
00F0: 06 03 55 04 03 13 04 62 6C 75 65 30 81 9F 30 0D ..U....blue0..0.
0100: 06 09 2A 86 48 86 F7 0D 01 01 01 05 00 03 81 8D ..*.H...........
0110: 00 30 81 89 02 81 81 00 E1 9E 5E A9 97 79 A3 C5 .0........^..y..
0120: 41 02 54 DE C7 4F E1 C5 E2 11 3B F8 B6 BA 87 34 A.T..O....;....4
0130: 93 B3 A9 35 83 5F 58 AF B1 A6 55 D5 1C 26 D3 3A ...5._X...U..&.:
0140: 05 E9 06 3C C9 08 D5 68 E1 9E 8D 76 72 EA 72 80 ...<...h...vr.r.
0150: 0B 45 F6 16 BA EC 54 28 55 9C C1 B8 25 45 06 4D .E....T(U...%E.M
0160: B4 68 2F 19 CC B8 76 3A 21 B1 2F 23 71 5C FC C7 .h/...v:!./#q\..
0170: 2B AF A8 A8 BA 5F 8C 8E 47 B6 CE AA C9 48 86 74 +...._..G....H.t
0180: 38 3A 1C 0A A4 24 8F A6 7C 55 45 80 A9 CE CB 67 8:...$...UE....g
0190: 82 D7 13 A1 3B 65 FD 75 02 03 01 00 01 30 0D 06 ....;e.u.....0..
01A0: 09 2A 86 48 86 F7 0D 01 01 04 05 00 03 81 81 00 .*.H............
01B0: BE B2 B9 99 24 81 D3 9F 95 EB 4E 71 A4 74 F8 D2 ....$.....Nq.t..
01C0: 82 F1 C3 2F 87 26 5C C3 56 81 3A F5 6E 78 B7 6D .../.&\.V.:.nx.m
01D0: F6 F0 86 4F F9 42 3F 58 D0 79 54 25 2F 77 40 EA ...O.B?X.yT%/w@.
01E0: 29 60 91 A9 69 C5 BF 7D 52 B5 E1 2A EE 1F 5F 77 )`..i...R..*.._w
01F0: BF 66 7F 76 E6 02 D1 B2 57 57 93 CF 9F 37 17 80 .f.v....WW...7..
0200: 8C 43 2B D4 D9 E8 97 BB F1 49 26 0E 15 50 7C 56 .C+......I&..P.V
0210: 01 60 9A 31 67 5C 4B 15 DE 99 20 14 F4 FD 36 ED .`.1g\K... ...6.
0220: 5B C1 93 62 50 97 29 20 FD FA 5B DA 8C 7D 39 11 [..bP.) ..[...9.
*** ServerHelloDone
[read] MD5 and SHA1 hashes: len = 4
0000: 0E 00 00 00 ....
*** ClientKeyExchange, RSA PreMasterSecret, v3.1
Random Secret: { 3, 1, 41, 118, 7, 196, 78, 149, 71, 171, 127, 241, 77, 57, 125
, 151, 207, 111, 133, 14, 109, 94, 210, 112, 125, 147, 45, 84, 234, 52, 129, 41,
143, 42, 146, 236, 66, 206, 221, 239, 104, 146, 227, 25, 127, 119, 15, 123 }
[write] MD5 and SHA1 hashes: len = 134
0000: 10 00 00 82 00 80 AF D7 D1 0A 6D 13 E5 B1 A7 65 ..........m....e
0010: DC 50 DB CD AD D6 64 94 12 32 69 9A 5C 8E DA 96 .P....d..2i.\...
0020: A9 4D 10 49 D7 EE C5 2F C6 53 09 C3 9C F5 4B 49 .M.I.../.S....KI
0030: 9B 9E AB 4D 34 8D E6 1B C0 46 AF 84 4E 88 6A D8 ...M4....F..N.j.
0040: EC CB A5 96 E2 CA 35 72 02 7B A0 A7 A2 29 3F FB ......5r.....)?.
0050: 43 56 87 4C 98 1D E3 46 C2 6D D8 BB 3A 30 69 E5 CV.L...F.m..:0i.
0060: 10 6E 6D FD 2D C1 EE A9 C7 6D 88 15 1C 6F 40 BC .nm.-....m...o@.
0070: F1 3B 4A 1D 24 B3 7A 64 FB 40 4E 5A E6 A9 1A 3E .;J.$.zd.@NZ...>
0080: B3 8D 1F EA E0 4B .....K
main, WRITE: SSL v3.1 Handshake, length = 134
SESSION KEYGEN:
PreMaster Secret:
0000: 03 01 29 76 07 C4 4E 95 47 AB 7F F1 4D 39 7D 97 ..)v..N.G...M9..
0010: CF 6F 85 0E 6D 5E D2 70 7D 93 2D 54 EA 34 81 29 .o..m^.p..-T.4.)
0020: 8F 2A 92 EC 42 CE DD EF 68 92 E3 19 7F 77 0F 7B .*..B...h....w..
CONNECTION KEYGEN:
Client Nonce:
0000: 3D 6C 09 3B 01 DA 81 F5 5F 91 19 FF ED 35 E2 66 =l.;...._....5.f
0010: 4F 43 DC 12 76 AE B8 86 3D 0E FC F6 50 7B AB DF OC..v...=...P...
Server Nonce:
0000: 3D 6C 09 3B 8E A2 8D DB C1 BC 30 96 EA 2B 90 0D =l.;......0..+..
0010: FA D5 67 C9 7B D7 15 CC B4 CC 3C 67 F3 15 0B 92 ..g.......<g....
Master Secret:
0000: EB AE 19 04 DB FF 90 0E 57 5B FA 99 1D DC C4 FB ........W[......
0010: A2 40 96 1F A0 BB FA B2 30 36 47 10 A4 45 2E FF .@......06G..E..
0020: 7D D3 B7 41 A1 BA 2E 89 3C 14 7B C8 71 83 41 4C ...A....<...q.AL
Client MAC write Secret:
0000: FD CA 22 FF B9 C5 9D B1 1E 77 A5 E4 2E 76 C4 89 .."......w...v..
0010: A0 5B ED 12 .[..
Server MAC write Secret:
0000: A9 D5 98 71 F7 F8 E6 DF B7 27 1D E1 63 7C 55 FE ...q.....'..c.U.
0010: 34 CE 64 98 4.d.
Client write key:
0000: EE 93 99 77 44 51 7D 7B 3C D1 BF FB DA 1D F5 E4 ...wDQ..<.......
Server write key:
0000: 4C FC 99 1D F9 B6 A6 00 79 60 9B 88 80 E9 D4 5F L.......y`....._
... no IV for cipher
main, WRITE: SSL v3.1 Change Cipher Spec, length = 1
*** Finished, v3.1
verify_data: { 167, 145, 0, 222, 143, 238, 230, 178, 224, 52, 119, 220 }
***
[write] MD5 and SHA1 hashes: len = 16
0000: 14 00 00 0C A7 91 00 DE 8F EE E6 B2 E0 34 77 DC .............4w.
Plaintext before ENCRYPTION: len = 36
0000: 14 00 00 0C A7 91 00 DE 8F EE E6 B2 E0 34 77 DC .............4w.
0010: B7 4A F1 55 4E 66 5B 45 13 5B 49 CF 41 8E 6E A0 .J.UNf[E.[I.A.n.
0020: 5B 1B 94 05 [...
main, WRITE: SSL v3.1 Handshake, length = 36
main, READ: SSL v3.1 Change Cipher Spec, length = 1
main, READ: SSL v3.1 Handshake, length = 36
Plaintext after DECRYPTION: len = 36
0000: 14 00 00 0C 56 56 DE CB 92 3A 47 0A 97 A0 0A B4 ....VV...:G.....
0010: C3 1A B4 1D B6 D5 66 11 DA 08 03 61 77 1F 56 E1 ......f....aw.V.
0020: 67 15 5F C9 g._.
*** Finished, v3.1
verify_data: { 86, 86, 222, 203, 146, 58, 71, 10, 151, 160, 10, 180 }
***
%% Cached client session: [Session-1, SSL_RSA_WITH_RC4_128_SHA]
[read] MD5 and SHA1 hashes: len = 16
0000: 14 00 00 0C 56 56 DE CB 92 3A 47 0A 97 A0 0A B4 ....VV...:G.....
Plaintext before ENCRYPTION: len = 439
0000: 50 4F 53 54 20 2F 20 48 54 54 50 2F 31 2E 30 0D POST / HTTP/1.0.
0010: 0A 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 74 .Content-Type: t
0020: 65 78 74 2F 64 6E 61 3B 20 63 68 61 72 73 65 74 ext/dna; charset
0030: 3D 55 54 46 2D 38 0D 0A 43 6F 6E 74 65 6E 74 2D =UTF-8..Content-
0040: 4C 65 6E 67 74 68 3A 20 31 30 31 30 30 31 31 31 Length: 10100111
0050: 30 0D 0A 0D 0A 44 4E 41 20 7B 0A 20 20 20 20 22 0....DNA .. "
0060: 63 6F 6E 74 65 78 74 22 20 44 4E 41 20 7B 0A 20 context" DNA ..
0070: 20 20 20 20 20 20 20 22 75 73 65 50 75 62 56 65 "usePubVe
0080: 72 73 69 6F 6E 22 20 42 6F 6F 6C 65 61 6E 20 22 rsion" Boolean "
0090: 74 72 75 65 22 2C 0A 20 20 20 20 20 20 20 20 22 true",. "
00A0: 42 4D 44 61 74 61 62 61 73 65 43 6F 6E 74 65 78 BMDatabaseContex
00B0: 74 22 20 4F 62 6A 65 63 74 20 22 22 2C 0A 20 20 t" Object "",.
00C0: 20 20 20 20 20 20 22 61 63 74 69 76 65 44 61 74 "activeDat
00D0: 61 62 61 73 65 73 22 20 44 4E 41 20 7B 0A 20 20 abases" DNA ..
00E0: 20 20 20 20 20 20 20 20 20 20 22 31 30 33 30 34 "10304
00F0: 39 30 34 31 33 36 39 35 22 20 53 74 72 69 6E 67 90413695" String
0100: 41 72 72 61 79 20 5B 0A 20 20 20 20 20 20 20 20 Array [.
0110: 20 20 20 20 5D 0A 20 20 20 20 20 20 20 20 7D 0A ]. ..
0120: 20 20 20 20 7D 2C 0A 20 20 20 20 22 61 63 74 69 .,. "acti
0130: 6F 6E 22 20 53 74 72 69 6E 67 20 22 48 54 54 50 on" String "HTTP
0140: 54 65 73 74 42 69 7A 41 63 74 22 2C 0A 20 20 20 TestBizAct",.
0150: 20 22 69 6E 70 75 74 22 20 44 4E 41 20 7B 0A 20 "input" DNA ..
0160: 20 20 20 20 20 20 20 22 73 65 6E 74 22 20 53 74 "sent" St
0170: 72 69 6E 67 20 22 74 72 75 65 22 0A 20 20 20 20 ring "true".
0180: 7D 2C 0A 20 20 20 20 22 75 73 65 54 72 61 6E 73 .,. "useTrans
0190: 22 20 42 6F 6F 6C 65 61 6E 20 22 74 72 75 65 22 " Boolean "true"
01A0: 0A 7D 0A 21 BC 76 86 A8 B3 E5 66 65 4A BF 47 7C ...!.v....feJ.G.
01B0: 5B D0 0E 34 1F 2F C7 [..4./.
main, WRITE: SSL v3.1 Application Data, length = 439
main, SEND SSL v3.1 ALERT: warning, description = close_notify
Plaintext before ENCRYPTION: len = 22
0000: 01 00 B1 C5 4C 11 63 01 0D CE 8E 3C 22 5D E8 0D ....L.c....<"]..
0010: 0F BE 87 D8 37 9F ....7.
main, WRITE: SSL v3.1 Alert, length = 22
I printed out the InputStream just to make sure it was being created correctly and got
com.sun.net.ssl.internal.ssl.AppInputStream@27e353
Any ideas why I am unable to read the response from the stream when using SSL?
thanks,
-Kevin