TLS協商 wireshark 抓包分析

分析環境在 windows 下,使用 windows 版本的nginx部署自籤服務器,使用 openssl s_client 命令測試雙向認證。

準備工具:

1. wireshark: 從騰訊軟件中心搜索wireshark並下載64位版本:https://pc.qq.com/ 

   https://dl.softmgr.qq.com/original/System/Wireshark-win64-3.2.2.exe

2. npcap程序:https://nmap.org/download.html

   最新版本:https://nmap.org/npcap/dist/npcap-0.9991.exe

注意:

因爲我是在同一臺服務器上啓動服務器並且抓包,所以整個操作都是在loop地址127.0.0.1上進行。wireshark默認不支持loopback抓包,所以安裝 wireshark 時,不要安裝其自帶的 npcap程序,如果安裝了先卸載老版本,再安裝獨立版本。

安裝 npcap 獨立版本時,注意勾選第一個(loopback)和第三個(802.11)方框。

然後啓動 wireshark, 選擇第一個 npcap loopback 設備就開始抓 localhost 的包了。

開始抓包:

1. 啓動 nginx

2. 啓動wireshark,選擇抓loopback設備的數據包

3. 使用 openssl s_client 啓動測試命令

openssl s_client -connect localhost:443 -cert client.crt -key client.key -CAfile root.crt

如下是輸出內容:

C:\nginx-1.16.1\ssl\CA2>openssl s_client -connect localhost:443 -cert client.crt -key client.key -CAfile root.crt
CONNECTED(000003DC)
Can't use SSL_get_servername
depth=1 C = cn, ST = sh, L = sh, O = bt, OU = test, CN = root
verify return:1
depth=0 C = cn, ST = sh, L = sh, O = bt, OU = test, CN = localhost
verify return:1
---
Certificate chain
 0 s:C = cn, ST = sh, L = sh, O = bt, OU = test, CN = localhost
   i:C = cn, ST = sh, L = sh, O = bt, OU = test, CN = root
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDHTCCAgUCAQEwDQYJKoZIhvcNAQELBQAwUjELMAkGA1UEBhMCY24xCzAJBgNV
BAgMAnNoMQswCQYDVQQHDAJzaDELMAkGA1UECgwCYnQxDTALBgNVBAsMBHRlc3Qx
DTALBgNVBAMMBHJvb3QwHhcNMjAwNTExMDg1MDQ1WhcNMjEwNTExMDg1MDQ1WjBX
MQswCQYDVQQGEwJjbjELMAkGA1UECAwCc2gxCzAJBgNVBAcMAnNoMQswCQYDVQQK
DAJidDENMAsGA1UECwwEdGVzdDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvKhPBeQUERKSAiiy/Y5z1V6fLiss/ZiG
tLF7dOKvrtaqzGL6lGs2ybY5p1v7wtIw3AqTwup63YDyYtghnacu26DHMlsYDIaa
tamP3+uTvDKlCTnw57ShTPhkPukIKZevv0SFyt+lEAeVM0S+zdOTlb2anA5pbOjB
eoA79LB6iVR1Ltp6nvKShBfRMk4JEp6fjPdhMwN+mX42PPkWHwHBLiRjVvRWYbFD
+g4wHjXutZ1iRWxOJe/vC+QFKCldKo19pp3S8O3WgHixTsIoJW//7q+hRMvvd6Em
3VB+rYTpd4/76O+Blp+QZJ4SvfeHX702p+2ik+6/5M7YlnlQCGmCfwIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQBqyJ1ZflMqy5QLwCEP8CZvD+SqGJpGUQCZjiZs/v1h
BepuKVrolQCPm55NVIuEAj6xZnysjG4wpY6I+brFcUB7I9MVXyg+pKwAVEBm6tvz
kG90w1zk/0lNmC+Eyi8ElbI8/+kVGLeFQyoIjMt3EEsCqX87wVBWyUdFwKZuCEJs
UvSDjTaL50T+6DXzshU1n4UcWq2dirZ8D3g8DnS/5T+AwdiDv9xqe7cuFyxB7ajA
/5bECrgKsFnebf/3xlgoQgMwGvUUEPVlT8AgX/NxGMFwV0m63s8PXz1PAGRfkUZn
fiPbxoP5mUxNndvQha3PB07Zb+WwESuNXeJERNW4WLEp
-----END CERTIFICATE-----
subject=C = cn, ST = sh, L = sh, O = bt, OU = test, CN = localhost

issuer=C = cn, ST = sh, L = sh, O = bt, OU = test, CN = root

---
Acceptable client certificate CA names
C = cn, ST = sh, L = sh, O = bt, OU = test, CN = root
Client Certificate Types: RSA sign, DSA sign, ECDSA sign
Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:ECDSA+SHA1:RSA+SHA224:RSA+SHA1:DSA+SHA224:DSA+SHA1:DSA+SHA256:DSA+SHA384:DSA+SHA512
Shared Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:ECDSA+SHA1:RSA+SHA224:RSA+SHA1:DSA+SHA224:DSA+SHA1:DSA+SHA256:DSA+SHA384:DSA+SHA512
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 2407 bytes and written 2289 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 494AAA15B6D90E318A4E274D92F8AF875B30B882854E76438367D7323830250E
    Session-ID-ctx:
    Master-Key: 2F7CF73C11F77697DF9EFE4CEB59EF6D649BB66387F4444D7435C360B94A241F04833FD24A666751147578676F522EAF
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 91 67 91 07 f1 5c 29 83-8e 6a 41 9b 13 41 9f a7   .g...\)..jA..A..
    0010 - 41 68 37 ca 0a 69 02 2e-34 16 9c 8a 59 13 60 a7   Ah7..i..4...Y.`.
    0020 - 49 0a 6d dd 12 a5 4f 1a-33 8d 24 a7 e1 a4 a4 c9   I.m...O.3.$.....
    0030 - 36 36 aa 61 94 dd 03 ef-71 5d 63 84 25 c2 77 c6   66.a....q]c.%.w.
    0040 - 4b 87 b4 26 ef 9d af b8-c4 c0 0b a4 0c 7b a2 38   K..&.........{.8
    0050 - cf ac 33 eb 3e 6a 6d cc-19 4b fc ec 40 9e 6b 1b   ..3.>[email protected].
    0060 - cc 82 55 08 42 5e eb 63-4d 39 5e fd 47 fb 2d 56   ..U.B^.cM9^.G.-V
    0070 - 01 c9 3e ce cd e3 4f f2-ba 34 41 3b 11 c8 3f c6   ..>...O..4A;..?.
    0080 - 09 47 30 39 b6 b8 24 74-09 ed be 02 80 26 1a cc   .G09..$t.....&..
    0090 - 2c 1a 54 fc 53 9d 31 ed-30 70 27 f6 19 ab 57 e2   ,.T.S.1.0p'...W.
    00a0 - e3 d6 ce ec 1a 5f 3e 02-32 ed 9e 9c 38 f0 9e b3   ....._>.2...8...
    00b0 - 90 a1 46 97 78 23 2d 5a-fb 3e 2c f2 5b ae 01 ef   ..F.x#-Z.>,.[...
    00c0 - 2d 25 84 78 e7 6f ef 88-74 b5 fc 33 bb e6 66 6b   -%.x.o..t..3..fk
    00d0 - 71 9d 21 96 32 f5 45 e8-f3 e8 f4 6e 31 03 4f 1e   q.!.2.E....n1.O.
    00e0 - 43 b8 25 60 85 20 08 25-11 ae 6e 03 f2 47 38 82   C.%`. .%..n..G8.
    00f0 - d6 7a dd d1 21 45 29 67-75 9d 47 8d ad 84 d8 e4   .z..!E)gu.G.....
    0100 - fe 68 54 22 74 76 b9 b1-90 37 62 81 54 88 3e 3b   .hT"tv...7b.T.>;
    0110 - 9a 19 f0 fa 7b 28 47 0e-79 0c bd 31 1b da 48 9d   ....{(G.y..1..H.
    0120 - b2 9c c3 58 75 a2 9d 5a-0c 5d 4b c1 27 8b 48 87   ...Xu..Z.]K.'.H.
    0130 - a9 62 db 8d bb 9b 2f 17-27 50 0f f9 bb 9f 8a f1   .b..../.'P......
    0140 - 77 17 0c a9 4c 9b 95 54-f7 bd 90 86 db 76 8f 93   w...L..T.....v..
    0150 - ce 57 f3 87 94 f5 6f 45-f1 8b 05 4b c2 2c 22 ba   .W....oE...K.,".
    0160 - 14 ae 1f b9 a7 b3 af 3c-2a 25 82 ee 01 01 82 a0   .......<*%......
    0170 - 02 c5 48 8e dc 52 08 73-c3 1d e7 1f 0d 94 6a f1   ..H..R.s......j.
    0180 - 6a be 10 57 e5 1f 2e 44-a0 be 15 54 b8 5f df d4   j..W...D...T._..
    0190 - 9c c2 d3 61 cb d1 16 86-db dc c4 7c 26 2a 6e 80   ...a.......|&*n.
    01a0 - f0 b9 ad 2c d6 c2 70 12-10 a0 d1 4a 47 1c 07 48   ...,..p....JG..H
    01b0 - 69 23 f0 62 43 89 11 79-05 93 7c 8c 85 f6 b5 fe   i#.bC..y..|.....
    01c0 - b9 b2 1a 26 cb 0e 71 21-a8 af d9 e5 60 ba db d8   ...&..q!....`...
    01d0 - 67 72 7d 76 64 af c1 70-4e ac dd 97 7d 26 5a 63   gr}vd..pN...}&Zc
    01e0 - 69 12 01 83 de 10 fc 7d-ad 0a 55 bf 24 9f f6 63   i......}..U.$..c
    01f0 - 03 03 e8 42 48 6a 5e fd-78 63 0b aa 46 b9 a7 e1   ...BHj^.xc..F...
    0200 - b6 9e ea cc e5 1d e0 09-99 49 b3 de 59 22 aa 4d   .........I..Y".M
    0210 - ee 9e 0e a1 ed 49 11 1d-e0 c2 d6 07 ad f1 01 02   .....I..........
    0220 - b5 0e f0 9e 09 3f 21 ed-8b bf cf 88 6c e8 e2 8f   .....?!.....l...
    0230 - 3b 85 66 37 f3 24 bb e0-3b 40 17 b2 ac 9d 00 2f   ;.f7.$..;@...../
    0240 - ec 09 73 88 92 65 84 75-53 e7 67 da 84 f4 6a 0d   ..s..e.uS.g...j.
    0250 - 8e 52 9e 65 43 d5 66 65-e5 98 09 0a 8b a0 74 b7   .R.eC.fe......t.
    0260 - d4 e7 96 e6 5c 04 a7 2a-59 83 22 7b f8 bc f1 13   ....\..*Y."{....
    0270 - ae a5 b1 93 a4 05 8c 18-5a db 38 54 28 72 94 47   ........Z.8T(r.G
    0280 - 5d 97 48 f0 de d2 df b0-42 6b 5d c6 6f 9d 33 a4   ].H.....Bk].o.3.
    0290 - 86 52 24 8f a3 65 8c c1-64 97 8b 4f b0 55 3d 2f   .R$..e..d..O.U=/
    02a0 - a9 f7 20 d3 28 de 7b 70-7f de 46 61 fa 2d c9 c8   .. .(.{p..Fa.-..
    02b0 - 1b 0c 40 4a cf 5e ee c3-3e 16 16 3e fc aa 2e 5a   ..@J.^..>..>...Z
    02c0 - f6 99 de 17 74 0d 30 76-2e 7d fc cc ff 6c 2e 37   ....t.0v.}...l.7
    02d0 - d0 da ba e7 41 89 db 51-33 14 d3 b0 d8 41 73 aa   ....A..Q3....As.
    02e0 - 65 bd 90 2a 79 59 45 fa-0a fe 3d 91 d9 fa 03 67   e..*yYE...=....g
    02f0 - e8 40 fe 56 5c 1f 00 7b-82 fb a8 0d c8 49 c3 e9   [email protected]\..{.....I..
    0300 - aa bd d7 91 85 b9 c8 b5-07 a5 b0 89 78 98 e7 f2   ............x...
    0310 - d5 39 43 a4 14 7f f9 d0-d0 7e f3 fb 88 06 70 85   .9C......~....p.
    0320 - 47 42 47 92 1c 1e 06 85-74 5b 4c 3e f3 3f 3b 4b   GBG.....t[L>.?;K
    0330 - 9f 5e 12 f2 4d 2d d1 f3-e0 fd 5a 2c dd 23 d6 f8   .^..M-....Z,.#..
    0340 - ee 96 c3 ee 7c 3f 57 d8-e5 d9 81 2f 62 0e 37 cd   ....|?W..../b.7.
    0350 - 6b f5 03 87 af de d6 c9-f1 d6 28 82 84 aa c4 fc   k.........(.....
    0360 - 44 72 c7 82 3c 7b 3b 79-8b 32 51 b8 ef be 2d 79   Dr..<{;y.2Q...-y
    0370 - c8 e6 8a 9a d5 0a 0a 5b-ce 2a dd 01 dd 30 06 2c   .......[.*...0.,
    0380 - 6b 31 13 b4 9c 49 47 ea-07 62 b8 8a 4b 13 88 55   k1...IG..b..K..U
    0390 - 34 e0 bd 66 0b 37 6b 28-78 73 3e 96 f7 1a d4 0c   4..f.7k(xs>.....
    03a0 - 32 b5 27 29 c8 56 08 1e-35 04 ba da 79 8d b3 b2   2.').V..5...y...
    03b0 - 96 24 18 eb 10 1a 43 59-38 0c aa fb 6b 47 a6 83   .$....CY8...kG..
    03c0 - 14 0f e2 fb 22 bf 73 42-c0 72 15 f9 da dc 3f 7a   ....".sB.r....?z
    03d0 - 6b a6 0d 27 3f b2 7b e8-ff 7e d1 5b 87 49 e2 fa   k..'?.{..~.[.I..

    Start Time: 1589336593
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: yes
---
因爲咱們是用的TCP協議連接的,所以到這一步會停下來,然後要手動輸入GET /纔會輸出html內容。
GET /
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
closed

C:\nginx-1.16.1\ssl\CA2>

這時候 wireshark 已經抓到 TLS 協商流程的數據包了。在 wireshark filter輸入框輸入 ssl && ip.addr == 127.0.0.1 過濾顯示。

結果如下:

由上圖可以看到,TLS協商基本上按三大步實現,沒一大步可能包含若干小步。

1.  Client Hello

告訴服務器我要進行TLS協商了,提供自己的版本、隨機數、加密套件列表、session id、壓縮算法等。

2.  Server Hello, Certificate, Server Key Exchange, Certificate Request,  Server Hello Done

告訴客戶端服務器的版本、隨機數、選定的加密套件、擴展參數信息;提供EC參數和簽名公鑰;並且要求客戶端提供證書;

3. Certificate,Client Key Exchange, Certificate Verify, Change Cipher Spec, Encrypted Handshake Message

告訴服務器我的證書,我的EC參數和簽名公鑰,我的證書是可信的,使用協商密鑰加密握手消息;

4. New Session Ticket, Change Cipher Spec, Encrypted Handshake Message

告訴客戶端確認的Session Ticket時常和id,確認協商密碼,使用協商密鑰加密握手消息;

到這一步就協商就完成了,後續就可以用協商密鑰加密數據通道了。

下面分析每一步的 wireshark 抓包:

Client Hello

Server Hello

 

 

 Certificate

 

 

 

 

New Session Ticket

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章