• Filippo Valsorda's avatar
    crypto/tls: implement TLS 1.3 middlebox compatibility mode · dc0be727
    Filippo Valsorda authored
    Looks like the introduction of CCS records in the client second flight
    gave time to s_server to send NewSessionTicket messages in between the
    client application data and close_notify. There seems to be no way of
    turning NewSessionTicket messages off, neither by not sending a
    psk_key_exchange_modes extension, nor by command line flag.
    
    Interleaving the client write like that tickled an issue akin to #18701:
    on Windows, the client reaches Close() before the last record is drained
    from the send buffer, the kernel notices and resets the connection,
    cutting short the last flow. There is no good way of synchronizing this,
    so we sleep for a RTT before calling close, like in CL 75210. Sigh.
    
    Updates #9671
    
    Change-Id: I44dc1cca17b373695b5a18c2741f218af2990bd1
    Reviewed-on: https://go-review.googlesource.com/c/147419
    Run-TryBot: Filippo Valsorda <filippo@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarAdam Langley <agl@golang.org>
    dc0be727
Client-TLSv13-KeyUpdate 9.82 KB
>>> Flow 1 (client to server)
00000000  16 03 01 00 f8 01 00 00  f4 03 03 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 20 00 00 00 00  |........... ....|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 32 cc a8  |.............2..|
00000050  cc a9 c0 2f c0 2b c0 30  c0 2c c0 27 c0 13 c0 23  |.../.+.0.,.'...#|
00000060  c0 09 c0 14 c0 0a 00 9c  00 9d 00 3c 00 2f 00 35  |...........<./.5|
00000070  c0 12 00 0a 00 05 c0 11  c0 07 13 01 13 03 13 02  |................|
00000080  01 00 00 79 00 05 00 05  01 00 00 00 00 00 0a 00  |...y............|
00000090  0a 00 08 00 1d 00 17 00  18 00 19 00 0b 00 02 01  |................|
000000a0  00 00 0d 00 18 00 16 08  04 08 05 08 06 04 01 04  |................|
000000b0  03 05 01 05 03 06 01 06  03 02 01 02 03 ff 01 00  |................|
000000c0  01 00 00 12 00 00 00 2b  00 09 08 03 04 03 03 03  |.......+........|
000000d0  02 03 01 00 33 00 26 00  24 00 1d 00 20 2f e5 7d  |....3.&.$... /.}|
000000e0  a3 47 cd 62 43 15 28 da  ac 5f bb 29 07 30 ff f6  |.G.bC.(.._.).0..|
000000f0  84 af c4 cf c2 ed 90 99  5f 58 cb 3b 74           |........_X.;t|
>>> Flow 2 (server to client)
00000000  16 03 03 00 7a 02 00 00  76 03 03 0f 9a 86 30 a4  |....z...v.....0.|
00000010  0a 88 2e ae a6 b9 ca ee  46 9c 87 f8 38 b3 5f d4  |........F...8._.|
00000020  2c 42 29 e3 e7 44 e4 d3  e2 00 53 20 00 00 00 00  |,B)..D....S ....|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 13 01 00 00  |................|
00000050  2e 00 2b 00 02 03 04 00  33 00 24 00 1d 00 20 1e  |..+.....3.$... .|
00000060  0b 5c d8 c6 44 ba ac 71  70 3c a2 20 b0 05 d5 98  |.\..D..qp<. ....|
00000070  c4 12 e3 43 67 53 c4 2a  72 6e 59 50 03 81 0e 14  |...CgS.*rnYP....|
00000080  03 03 00 01 01 17 03 03  00 17 cc 54 e1 4a d7 5c  |...........T.J.\|
00000090  1b 96 70 6e c0 ea 25 c6  0e 9d bd a6 c0 08 0a 45  |..pn..%........E|
000000a0  1b 17 03 03 02 6d 17 74  77 1a b1 00 47 8f e5 01  |.....m.tw...G...|
000000b0  3a 29 a3 e8 94 1b 3e ef  91 f7 05 8d 9a a4 2d 9a  |:)....>.......-.|
000000c0  9b cf d2 83 e4 74 28 b9  d5 ae c8 79 b4 f4 6b eb  |.....t(....y..k.|
000000d0  a0 db e7 db f3 ff 0b 2b  be 0c e7 3b d3 c6 79 ea  |.......+...;..y.|
000000e0  39 a6 66 19 88 39 04 01  f9 8d 82 04 6d e2 ce 73  |9.f..9......m..s|
000000f0  71 f9 bd 5b f6 66 a5 c7  f8 8b be db 1a b5 1b 38  |q..[.f.........8|
00000100  4b b4 3a 04 01 5e 68 13  e7 51 40 fe bd b8 a0 00  |K.:..^h..Q@.....|
00000110  7a 7d b7 60 0c 9d 23 7b  6e 77 fd 71 6f 45 30 41  |z}.`..#{nw.qoE0A|
00000120  bf 3f 5f 45 27 b1 bd 3e  39 d1 bf 80 be 74 e1 e3  |.?_E'..>9....t..|
00000130  ae 9c a7 68 40 ac 98 ef  3f 7f e6 41 a5 f5 c9 56  |...h@...?..A...V|
00000140  45 1c 4e ad 1f 62 58 fc  0b 1f 06 1a 12 c5 d1 c6  |E.N..bX.........|
00000150  0a 3d f9 f7 e9 a5 16 9b  69 bf f8 39 6f 38 8c cd  |.=......i..9o8..|
00000160  da da 97 f7 40 9b a1 9f  3b c8 a5 5b 42 2f 44 29  |....@...;..[B/D)|
00000170  f0 d9 0b 0e 7a b8 ae 9f  7f de fd 4c 81 c4 a2 9d  |....z......L....|
00000180  a1 40 b3 5e a5 22 1a 1a  7b f7 83 14 4d 53 c9 68  |.@.^."..{...MS.h|
00000190  4e e0 3f 8a 88 b0 74 51  eb 3a 85 ee 45 3b 5d d5  |N.?...tQ.:..E;].|
000001a0  8c cd ba 55 b9 89 32 4c  6e d9 81 c3 b0 68 4d 39  |...U..2Ln....hM9|
000001b0  0e 3b 70 31 a2 e2 6e f1  07 5a 0e 4f 6a 0c 58 f1  |.;p1..n..Z.Oj.X.|
000001c0  71 0d dc 35 a9 ea 15 50  1e fe f4 e5 c6 ff ef 6a  |q..5...P.......j|
000001d0  46 8c 04 27 1b cc a6 0e  40 25 c5 5e 13 e0 26 e8  |F..'....@%.^..&.|
000001e0  5f 44 bb 05 f7 1c 6e 8c  1e 58 f3 5f af 92 98 79  |_D....n..X._...y|
000001f0  93 50 a2 22 8d 65 62 20  78 15 8e 02 16 77 53 45  |.P.".eb x....wSE|
00000200  fd 51 a6 db 80 26 7a 69  c1 55 69 76 96 2e 49 62  |.Q...&zi.Uiv..Ib|
00000210  0e b8 fe 58 36 0d ac 68  b7 f0 54 16 45 bc 6a a0  |...X6..h..T.E.j.|
00000220  8b fa 2e 00 de cf ad 73  31 ff c0 5f be ff 09 76  |.......s1.._...v|
00000230  07 b2 08 27 90 98 2f b6  08 9f 8b 31 77 0a d1 41  |...'../....1w..A|
00000240  ee ca 97 0d 46 03 91 d6  12 02 b3 7d 13 e8 ab 83  |....F......}....|
00000250  79 93 96 33 f0 fc 14 3a  90 06 df 0d 38 59 1e 34  |y..3...:....8Y.4|
00000260  a6 8a 5c 19 ae 8f ba b7  b8 6d cf 59 29 81 8c b7  |..\......m.Y)...|
00000270  86 44 e0 a5 ef c1 24 cd  21 05 2a da 4b 01 e9 2b  |.D....$.!.*.K..+|
00000280  b6 c0 be 8e be f1 af 1c  a4 be b1 26 4c a9 e5 e7  |...........&L...|
00000290  41 fa 74 73 03 77 9b 5b  56 69 ca bd a5 99 ff d6  |A.ts.w.[Vi......|
000002a0  eb 77 0c b0 3e 29 dc e7  54 7d 4e 03 5f 75 1e a5  |.w..>)..T}N._u..|
000002b0  93 73 9a bd 53 31 57 b9  63 9c 17 f2 ae 3b 21 81  |.s..S1W.c....;!.|
000002c0  38 55 1f 56 96 0f 02 de  ad 2a a4 7e 71 52 79 21  |8U.V.....*.~qRy!|
000002d0  b0 76 e5 59 1c 74 10 0e  e3 90 4b 69 53 4d dd 20  |.v.Y.t....KiSM. |
000002e0  52 25 14 d1 67 ed 72 26  6a 4e 1f 1b aa b9 03 6d  |R%..g.r&jN.....m|
000002f0  81 67 1c c3 f2 f5 2e f0  01 b5 f5 8f d3 5e 08 2d  |.g...........^.-|
00000300  fc f5 8a c0 3d af c1 3d  3f 14 c1 b3 18 55 6b 98  |....=..=?....Uk.|
00000310  f5 4b c0 17 03 03 00 99  44 a2 0f 9b 62 d7 b0 e0  |.K......D...b...|
00000320  68 2e f1 90 64 fc fe 4f  e3 e0 9a 82 8d c3 14 6d  |h...d..O.......m|
00000330  f4 22 00 d9 74 5d 98 82  9f e5 6e fd 7e e5 9e d2  |."..t]....n.~...|
00000340  5a 1b 11 fd 05 c0 d7 4e  48 6b 8b e1 33 8d f3 04  |Z......NHk..3...|
00000350  2c 20 00 53 86 b7 f8 34  20 2f 6a e0 f9 c3 3a 85  |, .S...4 /j...:.|
00000360  f2 32 4e a0 3e 3c 2d c6  91 86 d3 4b 09 ef d2 93  |.2N.><-....K....|
00000370  3f a3 9a ad 0f f6 a3 04  ba 88 fe 9a 80 12 c5 0d  |?...............|
00000380  f9 86 2b b8 cb 7e 46 28  16 2d 58 bf 5a 0a 2e f8  |..+..~F(.-X.Z...|
00000390  cd c2 2e 01 c2 cf ca f7  5e b1 1d 8b 9d 1b 4b 8e  |........^.....K.|
000003a0  62 a2 c2 17 14 e7 00 be  00 3a 0c 4c 84 d7 c1 47  |b........:.L...G|
000003b0  61 17 03 03 00 35 7d 84  99 5a 9f b5 26 b5 f6 ce  |a....5}..Z..&...|
000003c0  56 ca a6 25 60 84 e3 5b  c1 b8 7c ed ed 02 f1 13  |V..%`..[..|.....|
000003d0  50 2a e8 a2 65 65 f9 88  b1 a5 01 24 0f 52 4a da  |P*..ee.....$.RJ.|
000003e0  5d ea 2b 88 b3 9c b7 ed  d8 70 38                 |].+......p8|
>>> Flow 3 (client to server)
00000000  14 03 03 00 01 01 17 03  03 00 35 e7 50 0e 48 d7  |..........5.P.H.|
00000010  8f 45 ff 48 48 1d 0c 94  b8 61 e2 ad 89 eb 4d 9b  |.E.HH....a....M.|
00000020  20 f5 73 41 85 0c 7b c1  9b 1e d1 a1 27 b3 83 51  | .sA..{.....'..Q|
00000030  05 51 a9 fc 98 7e fe ef  e2 43 6b a8 da f0 d0 d5  |.Q...~...Ck.....|
00000040  17 03 03 00 17 f3 bb 74  b9 31 69 37 87 c9 eb 04  |.......t.1i7....|
00000050  49 95 8f 30 e7 cf c5 67  27 3d 11 66              |I..0...g'=.f|
>>> Flow 4 (server to client)
00000000  17 03 03 00 ea 04 c2 4b  8d b2 6b 4e d5 f1 84 03  |.......K..kN....|
00000010  22 ec f6 d5 61 ba fe 8a  e2 23 75 f3 9e b5 9f 9f  |"...a....#u.....|
00000020  f7 23 a6 45 46 72 c1 90  cf 30 42 22 f4 7b 0b ca  |.#.EFr...0B".{..|
00000030  6e b3 4a 74 98 3c 5b a4  1e 27 af 25 a9 af 45 ad  |n.Jt.<[..'.%..E.|
00000040  70 0a 61 2a b3 0b 17 e6  ea 99 d5 d9 be 8e e9 97  |p.a*............|
00000050  7a 8b 95 4b 50 91 86 35  ef c5 67 0a 10 0f fb 26  |z..KP..5..g....&|
00000060  11 cb f7 7b 35 5a 58 79  80 38 cf f8 e8 77 c2 84  |...{5ZXy.8...w..|
00000070  3a 91 f5 26 23 79 2c ac  8b f7 40 f1 38 dd 0f d6  |:..&#y,...@.8...|
00000080  3c 0e be e3 12 37 5a 98  0c c8 6a 86 33 df e3 ef  |<....7Z...j.3...|
00000090  7d a1 9b 3b 1b 1e 3e 17  58 8d 39 7b 28 c2 02 bd  |}..;..>.X.9{(...|
000000a0  8a 5e 20 17 cb 0b 4c 01  df 36 a4 c0 0d de 26 67  |.^ ...L..6....&g|
000000b0  18 b0 a8 b2 98 b2 01 2a  8c 0e 29 ce 2f c7 4a c5  |.......*..)./.J.|
000000c0  ea 2a 86 06 33 62 93 ad  7a 08 15 d1 ab 46 14 43  |.*..3b..z....F.C|
000000d0  8d 44 b8 6f ac 4a bc fe  e2 91 2f ca 03 6d 49 66  |.D.o.J..../..mIf|
000000e0  7c bd ca 7b e1 da 73 45  c1 c2 79 02 02 55 52 17  ||..{..sE..y..UR.|
000000f0  03 03 00 ea 3c fa 1d 62  22 67 f0 44 ac ab 17 a0  |....<..b"g.D....|
00000100  f2 7d 44 ce 6a 3f dd 2c  d5 45 8f 2c 5d 6f 8e a6  |.}D.j?.,.E.,]o..|
00000110  c8 97 ea e9 df 35 fd 00  57 98 33 d1 87 f4 1a ee  |.....5..W.3.....|
00000120  8d 68 a7 ac b0 18 84 e3  26 df 08 85 8f e0 65 48  |.h......&.....eH|
00000130  a9 94 f1 e5 09 78 6c 76  4a 1a 14 35 93 cc 44 ea  |.....xlvJ..5..D.|
00000140  8c 8d f7 ee 33 4f cf e0  54 db ba 49 4b 5c b9 ea  |....3O..T..IK\..|
00000150  de a9 6d eb bc f4 43 85  27 a4 d6 64 6d 1e 9d 9d  |..m...C.'..dm...|
00000160  e1 81 22 30 b9 a1 c4 c9  b4 0b 4b 23 25 58 34 33  |.."0......K#%X43|
00000170  40 fc ea 84 fa f5 ba 40  6d 60 cc 60 1b 95 19 f6  |@......@m`.`....|
00000180  c6 9e ba 00 d8 fd 93 cd  bb 50 91 55 f1 e3 34 ea  |.........P.U..4.|
00000190  f8 99 7e fd 18 02 69 e3  54 cf 15 3f d3 54 0e e9  |..~...i.T..?.T..|
000001a0  30 4e 67 94 2e 48 49 45  b8 ae 1a 3c 6d 78 f0 2c  |0Ng..HIE...<mx.,|
000001b0  04 15 9e 36 7d f5 c1 5c  d6 4c 16 9e a4 93 53 12  |...6}..\.L....S.|
000001c0  08 c0 b9 c0 3c 2f b2 52  f1 5a 2f a4 8f 6c 55 57  |....</.R.Z/..lUW|
000001d0  5b 0e d7 ef c4 a1 ee 90  99 a0 77 63 71 49 17 03  |[.........wcqI..|
000001e0  03 00 16 cc 75 7c b6 21  9d ac 22 06 3a 15 90 e8  |....u|.!..".:...|
000001f0  15 43 08 c7 02 aa 40 cb  d5                       |.C....@..|
>>> Flow 5 (client to server)
00000000  17 03 03 00 16 38 87 e3  aa 7a 6f 28 c7 6f bd cf  |.....8...zo(.o..|
00000010  d0 50 21 a4 e0 44 9f fe  29 47 e9                 |.P!..D..)G.|
>>> Flow 6 (server to client)
00000000  17 03 03 00 1a 3c be d6  90 e8 ad 97 7c 0f c9 b6  |.....<......|...|
00000010  3d 66 52 35 57 1e 01 c5  a2 27 8b c4 17 25 20     |=fR5W....'...% |
>>> Flow 7 (client to server)
00000000  17 03 03 00 1d 21 5f dc  8c da b2 e4 b2 9c 1e c6  |.....!_.........|
00000010  dc 2c a5 f6 51 0d 18 03  13 e5 f3 b2 00 c8 4d 1f  |.,..Q.........M.|
00000020  f9 1b 17 03 03 00 13 f0  2a 99 bd b7 c6 3c 9b da  |........*....<..|
00000030  b8 c3 3d ee b3 f8 a3 0d  59 f8                    |..=.....Y.|