我支持一个. NET网站,其中(许多,许多,其他东西)交谈远程API从供应商系统。
我们希望升级以支持TLS 1.2我们希望按照以下问题进行升级:Are there .NET implementation of TLS 1.2?
但是我如何检查在我做了更改之后它是否真的工作。
理想情况下,我的一个供应商站点将开始使用TLS 1.2ONLY,然后我的测试可以只是"我们现在可以与该供应商交谈吗?"但我们没有。我猜我可以用某种数据包嗅探器做一些事情,但我不知道我到底在寻找什么,也不知道如何设置嗅探器以可读的方式收集必要的数据。
或者:
- 有人能告诉我如何在Fiddler/WireShark中收集这些数据的综合指南的方向吗
或者
- 有人能建议一种替代方法来测试更改是否有效吗?
5条答案
按热度按时间vsmadaxz1#
如果您在Fiddler中打开“CONNECTS”,您可以在Inspectors -〉TextView中看到TLS/SSL版本
要打开“连接”,请转到菜单栏中的
Rules
,然后从“隐藏连接”中 * 删除 * 复选框参考:Viewing HTTPS Handshakes in Fiddler
pvabu6sv2#
如果您在Wireshark中捕获连接创建,并检查来自客户端的第一个数据包,那么Wireshark将为您注解
ClientHello
结构体中的字段,包括客户端请求的TLS版本。类似地,如果查看来自服务器的第一个应答数据包,Wireshark将为您注解
ServerHello
结构体中的字段,包括为连接确定的TLS版本。工作示例参见this blog post或this one。
z9smfwbn3#
System.net跟踪确实包含了足够的详细信息来检查这一点,尽管它不是很容易访问。
This KB describes how to turn on System.Net tracing.
This blog post shows a full HTTPS request in System.Net tracing.
通过线路发送的字节被记录下来,在该博客文章给出的示例中,客户端流开始:
RFC5246描述了TLS 1.2,并解释了ClientHello是预期的第一条消息,并陈述了其格式:
This SO answer explains记录以0x16作为类型标记开始,然后是协议版本。
上面显示的会话版本为3.0,which means SSL 3.0。
RFC解释3.3是TLS 1.2。
因此,如果您的客户端数据以"
16 03 03
"开头,则您的客户端正在尝试协商TLS 1.2。您可能需要检查ServerHello以确定实际使用的版本。
gz5pxeao4#
TLS/SSL版本也可以使用curl工具https://curl.se/探测和确定,如下所示。
该命令
使用特定的TLS最低和最高版本向主机发送https GET请求。因此,上述命令强制客户端和服务器使用TLS 1.1。您可以从输出中看到,此操作失败,并显示错误消息
SSL错误协议版本警报
此错误的原因是主机配置为使用TLS最低版本1.2
标记为绿色的第二个命令成功,因为客户端和服务器都支持TLS v1.2
zbwhf8kr5#
如果您向https://check-tls.akamai.io/v1/tlsinfo.json发出HTTP GET请求,它将使用客户端请求中使用的TLS版本进行响应,例如;