由于POODLE,我希望放弃对SSLv3的所有支持,但发现仍然有一些人来自旧版浏览器,喜欢Windows XP上的IE浏览器。
如何从nginx中检测这些仅限SSLv3的用户,并将其redirect到一些帮助页面,并提供进一步的说明?
我绝对不需要解决方法来让这些用户使用不安全的浏览器。
如果我可以对所有非SNI浏览器做同样的事情,我会特别高兴的是:SSLv3不带有SNI,所以如果我可以redirect非SNI浏览器,它也将解决SSLv3问题。
抛开启用SSLv3的问题,您可以根据是否使用SSLv3协议简单地指示nginxredirect:
if ($ssl_protocol = SSLv3) { rewrite ^ /poodle-doodle.html; }
你可以从一个shell中testing这个:
$ wget --secure-protocol=SSLv3 -O - $SERVER_URL # or $ curl -v -3 $SERVER_URL
我不是nginxconfiguration专家,但是应该可以为特定主机名设置一个设置,另外还可以设置所有其他请求的默认设置。 如果客户端使用SNI并且SNI中给出的主机名与configuration相匹配,则基于名称的主机的设置将自动与https一起使用。 在所有其他情况下,这是不同的主机名,没有SNI的TLS客户端和使用SSL 3.0的客户端(不支持SNI),默认设置将被使用,以便您可以在其中提供不同的信息。 这个默认设置然后可以做你想要发送到老客户端的所有警告。
这样你也可以使用不同的证书,比如给所有的SNI客户端一个使用SHA-256签名的证书,但其他证书只有一个使用SHA-1签名,因为这些旧的客户端可能不支持SHA-256。
编辑:根据来自Xavier Lucas的评论,它将只使用来自默认(非SNI)configuration的证书设置,但其他设置取决于主机头。 这意味着非SNI客户端没有不同的文档根目录。