分析环境在 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+hRMvvd6E