如何通过System.Net记录的HTTP trace日志判断实际使用的TLS版本
基于提供日志的TLS版本判断结果
你提供的日志片段如下:
System.Net Information: 0 : [2544] SecureChannel#49129953::.AcquireClientCredentials, new SecureCredential() (flags=(ValidateManual, NoDefaultCred, SendAuxRecord), m_ProtocolFlags=(Ssl3Client, Tls10Client), m_EncryptionPolicy=RequireEncryption) Algorithm: RSA Length: 2048 Key Blob: 30 82 01 0a 02 82 01 01 00 b8 de 6a 2c a0 05 1d c1 2e 54 2d de 74 40 a6 83 2b 81 25 29 8d c1 2b e1 4d 4b 63 bd 7f c0 75 fe 15 eb 6b a6 2f 3c 65 d6 7a 55 dc 68 07 1c 6c 2e 8c cd d5 01 74 9f ca ca bb 5e b0 6d 9a 44 d1 1c 74 11 ca 4f 44 fa 59 59 22 f5 f9 c2 00 21 d6 1d a3 09 5a 0e fe da b7 ea d2 c8 55 51 c7 53 90 d1 b9 bf 2c 98 49 75 82 30 .... System.Net Information: 0 : [2544] SecureChannel#49129953 - Remote certificate was verified as valid by the user. System.Net Information: 0 : [2544] ProcessAuthentication(Protocol=Tls, Cipher=Aes128 128 bit strength, Hash=Sha1 160 bit strength, Key Exchange=RsaKeyX 2048 bit strength).
现有日志不足以精准确认最终协商成功的TLS具体版本,判断依据如下:
- 日志中
m_ProtocolFlags=(Ssl3Client, Tls10Client)仅代表客户端配置的允许协商的协议范围,说明客户端支持SSL 3.0和TLS 1.0两个版本发起协商,不代表最终和服务端协商的结果 - 认证完成日志中的
Protocol=Tls是低版本.NET System.Net日志的通用枚举值,没有携带TLS的次版本信息,无法区分是TLS 1.0、1.1还是更高版本。
如果需要确认精确版本,需要补充以下信息:
- 开启.NET网络跟踪的更高详细级别,获取带具体版本标识的协商完成日志
- 抓取通信过程的完整TLS握手报文,查看Server Hello报文中携带的协商完成版本字段
内容的提问来源于stack exchange,提问作者5minutsOfBullfight
相关产品推荐
相关产品推荐

