tcpdump 30分钟手撕 https 握手
对称加密与非对称加密
对称(Symmetric)加密:加解密都是同一个私钥
非对称加密:公钥加密、私钥解密
加密方式 | 举例 | 算法公开否 | 优点 | 缺点 |
---|---|---|---|---|
对称 | DES、AES | 公开 | 速度快 | 管理分发难,不安全 |
非对称 | RSA | 公开 | 安全性高 | 加解密耗时,速度慢,只适合对少量数据进行加密 |
Mac生成 RSA 公私钥对
# 语法:openssl command [command_opts] [command_args] # 下面命令显示 openssl支持 44 个 command # 其中 4 个生成的 command:gendh/gendsa/genpkey/genrsa $ openssl list-standard-commands # 最后的数字是 numbits,默认是 2048 $ openssl genrsa -out rsa_private_key.pem 1024 复制代码
执行上述命令后得到私钥,一般为几百字节,形如:
-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQDepYi2safcvnPyFzdzJJROYnFLzgDvT+RGuwGSiH7q44c8wyEc ... 4xvI5CXZsIob3UlI+Cdl68m3+Lmuo/5QcP4YyBsaTxw= -----END RSA PRIVATE KEY----- 复制代码
可以把 RSA
私钥转换成 PKCS8
格式:
$ openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt 复制代码
根据私钥生成公钥
$ openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout 复制代码
备注 重复执行,生成的公钥是一样的。也就是对应私钥的公钥是固定唯一的。
证书有几种格式:
.pem
—— (Privacy-enhanced Electronic Mail),Base64编码的DER
证书.cer
,.crt
,.der
—— 通常是二进制的DER
格式.p12
——PKCS#12
.pfx
——PKCS#12
的前辈
BER
/DER
/CER
的缩写如下:
BER
: Basic Encoding RulesCER
: Canonical Encoding RulesDER
: Distinguished Encoding Rules 辨别编码规则。打开是二进制。
HTTPS使用对称加密&非对称加密的 混合加密 算法
过程示意图如下(搬砖):
Transport Layer Security (TLS),以及其前身 Secure Sockets Layer (SSL) 。
In HTTPS, the communication protocol is encrypted using Transport Layer Security (TLS) or, formerly, its predecessor, Secure Sockets Layer (SSL). The protocol is therefore also often referred to as HTTP over TLS, or HTTP over SSL.
SSL 已经逐渐被 TLS 取代,所以下文就以 TLS 指代安全层。
抓包前先理解协议格式
1. TLS Record Protocol
2. TLS ContentType
3. TLS Version
4. TLS-Handshake Type
更正 共实际抓包看,Finished应该是 0 才对,不是 20 或 0x14
开始抓包
# sudo tcpdump -i en0 -nn -X -S "host www.baidu.com and tcp port 443 and (tcp[((tcp[12] & 0xf0) >> 2)] = 0x16)" $ curl -v "https://www.baidu.com/" 复制代码
过程
→ClientHello →01 ServerHello 02 Certificate 0b ServerkeyExchange 0c ServerHelloDone 0e →ClientKeyExchange →10 →ChangeCipherSpec →(ContentType从16Handshake切换成14ChangeCipherSpec) →Finished →14 加密传输(返回)数据 ChangeCipheSpec ? Finished 14
作者:Bug王
链接:https://juejin.cn/post/7023259889287823374