【问题标题】:Can Firefox be forced to use ssl instead of tlsFirefox 可以强制使用 ssl 而不是 tls
【发布时间】:2017-07-05 00:07:19
【问题描述】:

我想强制 firefox 56 使用 ssl 而不是 tls1.2 尽管SSL 3.0 is considered unsafe。 我的意图是产生像...no overlap ... 这样的错误。并截取此错误的屏幕截图。

about:config 中的首选项

根据我对firefox docs for security.tls.version*的理解我设置了

  • security.tls.version.min = 0
  • security.tls.version.max = 1

security.tls.version* 的文档也指出:

这些首选项替换了已弃用的 security.enable_ssl3security.enable_tls 布尔设置。升级后,旧 首选项不会自动迁移。

所以我检查了不推荐使用的首选项是否与我上面的设置冲突。但是我的 Firefox 56 安装没有以 security.enable_ 开头的首选项。所以看来我不必担心任何已弃用的设置。

其他原因可能是

证书是原因吗

网站使用具有以下特征的证书:

与本网站的连接使用强协议 (TLS 1.2), 过时的密钥交换 (RSA) 和过时的密码 (AES_256_CBC HMAC-SHA1)。

阅读this reply 后,我假设使用的密码不是 TLSV1 的一部分,但运行以下命令似乎证明使用的密码是受 SSL3 支持的密码。

openssl ciphers -v 'TLSv1' | grep "AES" | grep "256" | grep "CBC" | sort
// output
PSK-AES256-CBC-SHA      SSLv3 Kx=PSK      Au=PSK  Enc=AES(256)  Mac=SHA1
SRP-AES-256-CBC-SHA     SSLv3 Kx=SRP      Au=SRP  Enc=AES(256)  Mac=SHA1
SRP-DSS-AES-256-CBC-SHA SSLv3 Kx=SRP      Au=DSS  Enc=AES(256)  Mac=SHA1
SRP-RSA-AES-256-CBC-SHA SSLv3 Kx=SRP      Au=RSA  Enc=AES(256)  Mac=SHA1

更新

HSTS - Strict-Transport-Security HTTP 响应标头字段

这个问题Is firefox disabling of insecure TLS fallback part of the HSTS spec 可能是相关的。

HTTP Strict Transport Security chapter 5.1 (HSTS - rfc 6797) 包含

HTTP 主机通过向 UA 发出 HSTS 来声明自己是 HSTS 主机
政策,由
代表并通过
Strict-Transport-Security HTTP 响应标头字段超过安全
交通

有问题的网站有这些标头字段

p3p: CP="NON CUR OTPi OUR NOR UNI"
vary: Accept-Encoding
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
cache-control: max-age=315360000, public
expires: Sat, 03 Jul 2027 00:48:12 GMT
x-xss-protection: 1; mode=block
strict-transport-security: max-age=31536000; includeSubDomains

问题(tl;dr)

  1. 50及以上版本的firefox似乎不能强制使用ssl3。是这样吗?如果没有怎么实现?

  2. 据我了解,certificate signing request (CSR) 是获得证书的第一步。 CSR 是否已包含稍后必须在 https 连接中使用的密码和协议?

另见

【问题讨论】:

  • 我下载了 firefox esr 便携式 45.8 - 但似乎也无济于事。这个reddit thread 建议从firefox返回只要版本30。
  • 你想做什么,为什么?你已经给出了一个 X-Y 问题问题(见这里:meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。
  • The XY problem is asking about your attempted solution rather than your actual problem.。我认为情况并非如此 - 我的实际问题是“我怎么能产生像......没有重叠......”这样的错误。如果用户有不支持 tls 1.2 的旧浏览器,我想截取用户所看到的屏幕截图:桌面 IE9,在 Windows 7 或更高版本下支持 IE10,但默认情况下不支持。 Windows Vista、XP 和更早版本的操作系统不兼容 TLS 1.2 Desktop IE8 及更低版本:不兼容或稳定与 TLS 1.2 source
  • 为什么?没有人使用 Firefox 56 会遇到这种情况。

标签: ssl firefox https tls1.2 csr


【解决方案1】:

好的,所以我理解你想要在 Firefox 中启用 SSL 的原因是为了截屏,所以如果你关闭它,你会看到错误消息的类型并能够向用户解释问题?我认为这不是对您时间的建设性利用。

Firefox 已禁用 SSLv3 by default in Firefox 34 - 在撰写本文时,它是 20 多个版本(尽管承认只有 3 年前)。因此,即使您可以以某种方式在当前版本中重新启用它,错误消息也可能与该版本中的内容完全不同。

因此,如果您真的想这样做,那么您最好检查支持该功能的浏览器版本,而不是尝试破解当前版本。如果您无法访问旧浏览器,那么像 BrowserStack 这样的网站可以提供帮助。但即便如此,它也可能会根据用户使用的版本而改变。

此外,Firefox 从一开始就支持 TLSv1.0,因此您真的不必担心关闭 SSLv3,至少对于您的 Firefox 用户而言。也许您需要担心以 TLSv1.2 was only enabled in version 27 (released in February 2014) 的身份关闭 TLSv1.0,我们稍后会解决,但我真的不担心为您的 Firefox 用户禁用 SSLv3。

事实上,今天使用的所有浏览器都支持 TLSv1.0 (handy chart here),任何不支持的浏览器都可能对大多数网站有更大的问题,除非它们真的只是纯文本网站,或者你真的非常棒渐进式增强。

所以关闭 SSLv3 - it's insecure and should not be used。另一种方法是为使用古老浏览器的极少数用户承担 100% 的风险。是的,浏览器应该使用最高版本的 TLS 而不是 SSL,如果它们支持它,但各种降级攻击可能会无意中导致情况并非如此。最安全的选择是禁用它。我通常不是一个绝对的人,通常会建议你衡量你的使用情况,但对于绝大多数网站来说,禁用 SSLv3 是他们应该做的事情。甚至 Google has disabled SSLv3 为他们的网站,如果他们能做到这一点,那么你可以确定你这样做是安全的。

如果您收到投诉,则错误消息可能会显示类似“安全连接失败”和协议错误的内容。 https://badssl.com/ 是一个非常方便的网站,用于测试错误的 SSL/TLS 配置,但不幸的是它没有 SSLv3 的示例。

接下来将关闭 TLSv1.0,这将不那么容易,因为浏览器需要更长的时间来实现更高版本(尤其是 Internet Explorer,它直到版本 11 才可靠地获得 TLSv1.2)。 TLSv1.0 还没有被破坏,但它正在被淘汰,像 PCI-DSS 这样的标准要求它尽快关闭(尽管they've pushed back on the date for this at least once)。如果您想在 Firefox 中进行测试,这很容易通过设置 security.tls.version.max = 1 并访问仅限 TLSv1.1 或 TLSv1.2 的站点,例如 https://tfl.gov.uk/,您会在其中看到以下消息(这可能与您的 SSLv3 访问者看到的类似而不是您在答案中显示的密码错误):

连接到 tfl.gov.uk 时出错。同行报告 不兼容或不受支持的协议版本。错误代码: SSL_ERROR_PROTOCOL_VERSION_ALERT

我还建议您将日志记录添加到您的网络服务器日志中以跟踪所使用的 TLS 版本,这样您就可以在以后决定何时关闭协议或密码。例如,使用 NginxApache 这很容易,但如果使用其他 Web 服务器,或者如果您的 Web 服务器前面有一个负载平衡器来处理您的 TLS,那么需要查看它们是否允许这样做。

最后回答您的第二个问题,CSR 没有定义协议或使用的密码。这是由服务器和客户端都支持的组合决定的。理想情况下,服务器应该优先执行更安全的协议和密码,而不是弱协议和密码。

协议(SSLv3、TLSv1.0...等)是 HTTPS 连接的建立方式以及密码的确定方式。密码是用来实际加密连接的。因此,此类密码不限于它们最初引入的协议,并且无论您使用的是 SSLv3、TLSv1.0、TLSv1.1 还是 TLSv1.2,PSK-AES256-CBC-SHA 都可用。 TLSv1.3(即将发布)是第一个尝试主动删除旧密码而不是继续扩大列表的版本。

一段时间以来,Chrome 对较旧的密码套件(基本上是那些在密码套件名称中未使用 GCM 的人,尽管有一些不太常见的密码套件也认为是安全的)发出了温和的警告,这就是为什么您会看到“与此站点的连接使用...过时的密钥交换 (RSA) 和过时的密码(AES_256_CBC 和 HMAC-SHA1)。”信息。 SSLLabs Server Test tool 是检查服务器设置的最佳工具,我建议将其与其他网站进行比较以获得 A 级,这应该会让你在一段时间内处于有利地位(我建议每季度重新扫描一次以跟上任何变化安全世界——例如发现 SSLv3 不安全)。 Mozilla 还为最常见的浏览器提供了一个非常方便的SSL/TLS config generator

HSTS(或 HTTP 严格传输安全)确实没有限制这种对话。它只是声明客户端必须对站点使用 HTTPS,并且不应使用纯 HTTP。当然,这取决于能否建立安全的 HTTPS 连接。如果您的某些站点或域尚未移植到 HTTPS,则启用此选项可能是一个危险的选项。

【讨论】:

  • 感谢您提供详细的、记录 tls 详细信息和链接的提示。 Side-notes: 少数用户仍在使用旧浏览器(例如 IE8)。我们的管理员制定了一项政策,强制我们仅使用 TLS 1.2。所以我无法提供低于 TLS 1.2 的任何东西。我认为服务器也配置为使用 HSTS;但 chrome-network-tab 没有在标题中显示字段 Strict-Transport-Security
【解决方案2】:

问题 1 的答案:强制 firefox 使用弱加密

我无法强制当前的 firefox (v 54) 使用弱加密。正如this reddit thread suggested 我下载了Firefox 30.0 portable from sourceforge 并在设置security.tls.version.max = 1 后能够强制出现所需的错误Firefox Secure connection failed: ssl_error_no_cypher_overlap

这是我的截图:

问题 2:CSR 是否已经包含必须使用的密码和协议?

这对我来说仍然不清楚。

【讨论】:

  • 没有 CSR 只包含创建证书所需的信息。密码和协议由服务器和客户端决定,SSLv3 或 TLSv1.2 可以使用相同的证书,密码也可以使用类似的证书,具体取决于服务器设置和使用的客户端。您的警告是因为您的服务器设置为使用较旧的密码。谷歌你的服务器和 https 设置以改进这一点(例如,如果使用 Apache,谷歌“Apache https 设置”)。
  • 您确定是服务器使用旧密码的原因吗?我认为在这种情况下会出现警告,因为我强制旧版 Firefox 以最大 tls 1.1 接受;服务器设置为仅与 tls 1.2 通信,因此没有重叠。
  • 我在第一个问题中谈论的是您的 Chrome 警告。它在那里建立了连接,但警告您使用的是较旧的密码,应该使用更好的密码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 2012-07-03
  • 2019-03-26
  • 1970-01-01
相关资源
最近更新 更多