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

在Poodle漏洞最近暴露之后,我们的团队决定从SSLv3开始。 但在完全删除之前,他们希望警告 日常用户 ,他们的浏览器使用不推荐SSLv3。 所以,我们想出了这个想法

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

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

我知道nginx具有proxy_set_headerfunction。 所以这个会很简单

 proxy_set_header X-HTTPS-Protocol $something; 

现在,问题是:显然nginx知道客户端使用的协议,但我怎么能通过HTTP头传递信息到后端?

谢谢


正如类似的线程Apacheredirect用户指出, 如果他们正在使用SSLv3 ,这个想法可能会变得非常非常糟糕的主意。

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

Nginx使用了许多可以在configuration中使用的variables。 这个页面提供了variables的完整列表。 在HTTPS请求中保存协议的variables是ssl_protocol

$ ssl_protocol

返回build立的SSL连接的协议;

所以你的proxy_set_headerconfiguration是

 proxy_set_header X-HTTPS-Protocol $ssl_protocol 

另一个参考: 在这里