通过HTTP标头将SSL协议信息传递到后端


13

在最近发现Poodle漏洞之后,我们的团队决定从SSLv3继续。但彻底清除之前,他们要提醒日常用户,他们的浏览器使用过时的SSLv3。因此,我们想到了

  • 从前端SSL卸载检测协议(SSLv3,TLS1等)(我们使用nginx)
  • 通过HTTP标头将该信息(SSL协议)传递给Apache后端。

然后,我们的后端代码将处理该标头,并在客户端使用SSLv3时发出警告。

我知道nginx具有功能proxy_set_header。所以这个简单

proxy_set_header X-HTTPS-Protocol $something;

现在,问题是:很明显nginx知道客户端使用的协议,但是如何通过HTTP头将信息传递给后端呢?

谢谢


正如类似的线程Apache重定向用户所指出的,如果他们使用的是SSLv3,则这种想法可能会变得非常糟糕。

原因是TLS握手发生在通过TLS隧道发送HTTP通信之前。当我们的后端检测到SSL协议时,客户端可能已经在他的第一个请求中发送了私有数据。对于永久和长期的解决方案,我们应考虑禁用SSLv3。

Answers:


14

Nginx使用许多可以在配置中使用的变量。此页面提供了变量的完整列表。HTTPS请求中包含协议的变量为ssl_protocol。引文:

$ssl_protocol

返回已建立的SSL连接的协议;

所以你的proxy_set_header配置是

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

另一个参考:这里


$ ssl_protocol末尾缺少分号(我不能更改它,因为serverf * l需要更改6个字符)。
危险89年

@ danger89做到了
sanmai
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.