eBPF 核心技术与实战
倪朋飞
资深 Linux 专家,Kubernetes 项目维护者
11036 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 28 讲/共 37 讲
eBPF 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

25|技术解析:HTTPS跟踪详解(下)

本节课音频暂缓更新
你好,我是倪朋飞。
上一讲我带你一起回顾了 HTTP 和 HTTPS 协议的工作原理,并以套接字 eBPF 程序为例带你学习了如何使用 eBPF 程序跟踪 HTTP 网络包。由于 HTTP 网络包传输的数据是明文的,所以我们可以直接从套接字中读取到 HTTP 请求和响应的具体内容。而 HTTPS 则不同,由于 TLS 加密的过程发生在用户态,从内核态看到的总是加密后的数据。所以,要跟踪 HTTPS 网络包,就必须要从用户态跟踪入手了。
那么, 该如何使用 eBPF 用户态程序跟踪 HTTPS 呢,今天,我就带你一起去看看这个问题。

如何确定用户态跟踪点

既然要使用用户态程序跟踪 HTTPS,那么我想进入你脑海的第一个问题就是有哪些用户态跟踪点可以使用呢?没错,这正是我们需要解决的第一个问题。
用户态不同于内核,每个应用程序的源码、编程语言、运行时等都不同,所以在选择跟踪点时需要考察它们有哪些共同的部分,这样跟踪共同的模块才可以涵盖更广的应用场景,避免为每一个应用再去做适配(当然,通用性也是 eBPF 的一个目标)。
对于我们今天的主题 HTTPS 来说,跟踪的主要难点在于 TLS 加密,而你一定听说过 TLS 加密协议最流行的开源库——OpenSSL。OpenSSL 是一个功能强大的开源加密库,广泛应用于加密通信、证书管理和数据安全中。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. HTTPS跟踪的主要难点在于TLS加密,需要从用户态跟踪入手。 2. 使用ldd命令可以确认应用程序是否使用了OpenSSL库,而具体的挂载点则是应用中所调用的函数,如SSL_read/SSL_write系列函数。 3. 用户态eBPF程序的开发步骤可以在课程内容中找到,可以回顾如何使用eBPF用户态跟踪排查应用程序。 4. 用户态前端程序的开发需要关注eBPF程序的挂载方式,以及动态查找动态链接库路径的实现。 5. 通过用户态eBPF程序成功跟踪到了HTTPS请求的详细内容,解决了无法对HTTPS进行抓包的问题。 6. OpenSSL的基本工作原理以及用户态eBPF程序的示例带领读者学习了如何跟踪HTTPS网络包。 7. 跟踪HTTPS请求的关键在于跟踪SSL_read/SSL_write函数,但要完整跟踪所有应用的HTTPS请求,还需要跟踪和支持其他主流的加密库。 8. 在访问HTTPS网站时,输出的内容可能会有乱码,需要改进跟踪程序以更好地支持这类访问请求。 9. 通过实战演练和交流进步,可以更好地理解和应用用户态eBPF程序进行HTTPS跟踪。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《eBPF 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)