【问题标题】:Check if a connection is TLSv1 vs SSLv3 (SSL_CIPHER_description/SSL_CIPHER_get_name)检查连接是 TLSv1 还是 SSLv3 (SSL_CIPHER_description/SSL_CIPHER_get_name)
【发布时间】:2014-12-26 17:04:36
【问题描述】:

我有一个使用 OpenSSL 的服务器应用程序。我试图了解什么类型的 SSL 连接正在访问我的系统(即 SSLv2、SSLv3、TLSv1、TLSv1.1、TLSv1.2)。特别是,我正在努力禁用 SSLv3(re: POODLE)。在我这样做之前,我想看看谁/什么在 SSLv3 上连接

我目前正在使用 SSL_CIPHER_description 和 SSL_CIPHER_get_name 函数,它们提供了关于为每个连接协商的密码的非常好的信息

我在尝试区分 SSLv3 和 TLSv1 连接时遇到了一些挑战。每 https://www.openssl.org/docs/ssl/SSL_CIPHER_get_name.html

"The TLSv1.0 ciphers are flagged with SSLv3. No new ciphers were added by TLSv1.1." 

我已确认 TLSv1 连接被标记为 SSLv3 例如:SSL_CIPHER_description 在绝对是 TLSv1.0 的连接上返回以下内容: AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1

有没有人知道如何在 OpenSSL 中检测连接是 SSLv3 还是 TLSv1?

【问题讨论】:

  • “在此之前,我想看看谁/什么在 SSLv3 上连接...” - TLS 1.0 is ubiquitous 客户端采用率为 99.7%。拔掉 SSLv3 的插头,不要回头。在 POODLE 之前 10 年,安全社区告诉你停止使用 SSLv3,因为它存在问题(请参阅 Loren Weith 的 Differences Between SSLv2, SSLv3, and TLS 论文)。如果一个客户端在 2015 年不支持 TLS,那么它永远不会......

标签: encryption openssl


【解决方案1】:

查看 API SSL_get_cipher_version() 和朋友。

此外,SSLv3/TLS 数据包都以您可以轻松检查的标头开头:

Byte 0  : Record Type
Byte 1  : Version Major
Byte 2  : Version Minor
Byte 3-4: Length of payload minus header (16k max)

版本主要分解如下:

Major == 2: SSLv2 (The rest differs from SSLv3+ headers)
Major == 3: SSLv3, TLSv1.0, TLSv1.1, or TLSv1.2

次要版本:

Minor == 0: SSLv3
Minor == 1: TLSv1.0
Minor == 2: TLSv1.1
Minor == 3: TLSv1.2

请注意,在握手/协商完成之前,使用的版本可能会发生变化。如果您等到应用程序数据,它应该是准确的。 TLSv1.2 记录的示例应用程序数据:

0x17 0x03 0x03 ...

嗅探数据!

如果这只是为了研究,另一种方法是使用Wireshark 或类似名称来嗅探数据。

【讨论】:

  • 谢谢。 SSL_get_cipher_version 也无济于事。它当前返回“TLSv1/SSLv3”。根据规范(openssl.org/docs/ssl/SSL_CIPHER_get_name.html),这是预期的。我看看能不能搞清楚头部检查
  • 如果这只是为了研究,您可以使用 Wireshark 或类似工具来捕获/嗅探数据。
  • 您描述的是记录层版本,它不同于 SSL/TLS 协议版本。它们相互独立(按设计)。
【解决方案2】:

连接协商成功后可以使用SSL_get_version(SSL *ssl)方法。

【讨论】:

    猜你喜欢
    • 2015-03-30
    • 2018-10-21
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多