我的tls.Config设置为不使用ECDHE交换,因此我可以监控wireshark中的流量,而无需获取客户端的密钥。
config = &tls.Config{
Certificates: []tls.Certificate{cpair},
MinVersion: tls.VersionTLS12,
PreferServerCipherSuites: true,
ClientAuth: tls.NoClientCert,
CipherSuites: []uint16{tls.TLS_RSA_WITH_AES_256_CBC_SHA,
tls.TLS_RSA_WITH_RC4_128_SHA,
tls.TLS_RSA_WITH_AES_128_CBC_SHA,
},
}
然而,在分析wireshark中的流量时,我仍然看到与ECDHE ciper suiete的连接:
62 ssl_decrypt_pre_master_secret: session uses Diffie-Hellman key exchange
(cipher suite 0xC014 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA)
and cannot be decrypted using a RSA private key file.
答案 0 :(得分:0)
原来我忘记了我在apache上的反向代理。
wireshark在端口443上寻找https连接,
但过滤掉了服务器端口上的apache和我的服务器之间的通信
我能够在apache的配置中成功限制ssl.conf上的SSLCipherSuites,并且能够分析流量
我假设apache正在将数据传递给反向代理中的go程序,导致apache并根据tls.Config协商连接,我没有看到,因为该通信在localhost上的一个不同的端口(我根据我的IP地址上的端口443过滤wireshark,而不是localhost,这是apache和go的沟通方式)