Snippet from nginx conf:
server { ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ...
有没有办法设置这个强制使用TLSv1.2,如果客户端不支持,那么回退到TLSv1.1 / TLSv1?
还是TLSv1.2默认已经使用?
将使用连接两端支持的最高协议版本。 所以,默认情况下,将使用TLS v1.2。
你需要closures像SSLv2 / 3这样壮观的不安全协议的原因是因为降级攻击; 中介可以修改SSL连接协商以强制使用较不安全的协议。 除了不支持较旧的协议外,没有什么可以做的,因为你永远不会被告知另一端支持更好的协议(因为恶意中介已经删除了这些信息)。
是默认的,你的服务器规则指定了关于SSL协议的configuration,以支持那些开箱即用的:
我们不想使用SSLv2(不安全)或SSLv3(可利用)
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
除非您有其他相信的特定理由,否则通常支持TLS的系统将支持TSLv1.2。
所以如果可能的话,我会使用:
ssl_protocols TLSv1.2
如果这是不可能的,那么我会使用:
ssl_protocols TLSv1.2 TLSv1.1
TLSv1也可以在第二种情况下使用(代替更具体的版本),但是这样,您可以确保优先顺序。 我有点认为TLSv1通常比1.1更喜欢1.2,但明确表示它不会伤害。
请参阅Mozilla的TLSconfiguration生成器以获取有关您的更一般的TLS设置的一组build议。