首页 > 解决方案 > 使用 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

如何使这项工作?

标签: gocertificate

解决方案


推荐阅读