阅读 514

tcpdump 30分钟手撕 https 握手

对称加密与非对称加密

  1. 对称(Symmetric)加密:加解密都是同一个私钥

  2. 非对称加密:公钥加密、私钥解密

加密方式举例算法公开否优点缺点
对称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 复制代码

备注 重复执行,生成的公钥是一样的。也就是对应私钥的公钥是固定唯一的

证书有几种格式:

  1. .pem —— (Privacy-enhanced Electronic Mail),Base64编码的 DER 证书

  2. .cer, .crt, .der —— 通常是二进制的 DER 格式

  3. .p12 —— PKCS#12

  4. .pfx —— PKCS#12的前辈

BER/DER/CER的缩写如下:

  1. BER: Basic Encoding Rules

  2. CER: Canonical Encoding Rules

  3. DER: Distinguished Encoding Rules 辨别编码规则。打开是二进制。

HTTPS使用对称加密&非对称加密的 混合加密 算法

过程示意图如下(搬砖):

https-handshake.png

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

TLS Record Protocol .png

2. TLS ContentType

TLS-ContentType.webp

3. TLS Version

TLS-version.webp

4. TLS-Handshake Type

TLS-Handshake Type.webp

更正 共实际抓包看,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


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐