如何确保CGI env var SSL_SESSION_ID不为空?

时间:2014-04-01 21:22:00

标签: apache

是否有一些mod_ssl配置魔法来确保CGI脚本/程序环境中的SSL_SESSION_ID env var永远不会为空?我有多个Apache服务器,所有这些服务器都是2.4.x版本,当浏览器在初始连接时获取页面时,我看到了一个命中和未命中的结果。在某些浏览器(最新的MS Explorer)上,SSL_SESSION_ID不为空。在最新的Firefox和Chrome上,SSL_SESSION_ID只是空白。在浏览器中点击重新加载,SSL_SESSION_ID按预期返回,SSL_SESSION_RESUMED从“初始”更改为“恢复”。是的,“Initial”由于某种原因有一个大写字母“I”。

某些应用程序空间问题需要此env var。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

显然唯一的方法是使用(不安全的)SSLv3:

  

在Red Hat网站上发现了一个解决方案,该网站声明SSLv3必须存在   SSLProtocol列表并没有承诺提供   TLS协议规范中的SSL_SESSION_ID。

     

因此,请将SSLProtocol配置更改为:

SSLProtocol +SSLv3 -TLSv1.1 -TLSv1 -TLSv1.2

说明:

  

通用网络浏览器发送"客户端Hello"带有" SessionTicket的消息   TLS"在TLS握手期间,数据长度的扩展= 0。如果   " SessionTicket TLS"(数据长度= 0)由客户端提供   服务器将处理会话票证而不是会话ID。   因此,服务器不会生成会话ID。在第二个   访问,它发送"客户端Hello"有一张会话券   在第一次访问时收到,服务器验证它,如果是,则验证它   有效,生成会话ID。此行为由RFC5077和   会话ID未出现在第一次访问时的原因   出现在第二次访问。这是一个不可避免的限制   使用TLSv1并且客户端实现使用" SessionTicket   TLS"但是,在配置客户端以使用SSLv3时的扩展名   而不是TLSv1,会出现会话ID,因为SSLv3没有   这样的延伸。如果可能,请考虑使用SSLv3。

来自https://issues.apache.org/bugzilla/show_bug.cgi?id=56324