go - 使用 go 客户端记录 https 握手详细信息
问题描述
我有一个 go 应用程序,在与 C++ 服务器通信时每隔几天就会开始收到一个 tls decrying 错误。为了调试这个问题,我正在尝试添加握手日志,比如使用了什么密码套件、曲线、点进行协商。连接是 mTLS,所以如果我可以在 ServerHello 和 ClientHello 期间记录尽可能多的详细信息,那就太好了。
我也在查看 KeyLogWriter 来解密流量,但我仍然想要上述功能,因为问题非常间歇性,我无法重现它。
编辑:
根据@Peter 的评论,我目前有这样的事情。
client := &http.Client{}
transport := &http.Transport{}
transport.DialTLSContext = func(ctx context.Context, network string, addr string) (conn net.Conn, err error) {
conn, _ = net.Dial(network, addr)
// logrus.Infof("%+v", conn.(tls.Conn).ConnectionState) // need something like this
}
client.Transport = transport
如何使这项工作?
解决方案
推荐阅读
- sql - 雪花 - 如何转换为日期时间戳?
- ios - 我想将字符串转换为 UIColor
- json - json数据文件中的人脸识别结果
- c# - c# 中的通用延迟/计划操作调用
- laravel - Laravel 重定向到使用 url 参数播放的新 url
- ruby-on-rails - 条纹集成在 Rails 项目中未被识别
- node.js - 如何修复 ReferenceError: router is not defined 错误?
- python - 为什么插入后 stream.Parts 没有很好地形成?
- javascript - 在 app.js 中添加 ngLoadScript 作为依赖项后路由是否有效?
- mysql - Laravel / SQL - 按时间间隔存储数据