我想将我的 AWS ELB 升级到仅允许 TLS v1.2 的安全策略。
在此之前,我想检查 ELB 日志以确保当前没有客户使用旧版本。
我的 ELB 日志有一个字段“ssl_protocol”。大多数请求记录“TLSv1.2”,但少数指定“TLSv1”。(也有一些 v1.0 和 v1.1,但这些都收到 4XX 响应,因此可能是非法流量)。
但我不太确定这个“TLSv1”是什么。从这个问题听起来,一个指定了 TLSv1 协议的请求说它可以通过任何TLSv1 次要版本进行加密,因此如果我不允许版本 1.0 和 1.1,这些请求仍然可以使用 1.2 成功加密。
这个对吗?
首先,我没有看到任何关于 ELB 日志中 ssl_version 字段内容的具体信息,这将是权威回答 ELB 日志含义的正确位置。
也就是说,在这种上下文中,字符串
TLSv1
应该被合理地解释为TLS 版本 1.0。在您的特定情况下,这意味着这些客户端似乎不支持更高版本(因为他们应该尽可能喜欢和使用这些版本)。
值得注意的是,像
SSLv2
,SSLv3
,TLSv1
,TLSv1.1
,之类的字符串TLSv1.2
,TLSv1.3
尤其是像这样写的时候(有时主题的细微变化,取决于所涉及的软件)通常不是根据确切的当前上下文制作的自由格式文本,而是而不是底层软件中使用的协议标识符。至于
TLSv1
广泛用于 TLS 1.0 版的可能令人困惑的标识符,我认为我们可以读到的只是流行的实现(如 openssl)被版本控制策略的变化所吸引,这种变化只有在 TLS 1.1 和以下版本是在很久以后推出的。即,SSL 的版本为 1.0、2.0、3.0,但由于协议将名称更改为 TLS,因此版本改为遵循模式 1.0、1.1、1.2、1.3。在首次引入 TLS 1.0 时,我猜想只是假设下一个版本将是 2.0,并且像以前一样继续简化标识符的相同模式将继续有意义。
旁注:具有巧妙使用与不同的含义的命令行选项
是正确的,但问题不在于如何指示允许连接的方式,而是解析日志条目指定的确切版本使用了某些连接。
curl
--tlsv1
--tlsv1.0
curl
如果您想允许用户回退到较低版本(当然有像贵宾犬这样的漏洞)或者如果密码或 tls 版本不匹配则拒绝,这是您的选择。您必须从这里与最终用户/客户端通信,您必须使用提到的版本,否则连接将被拒绝。
所以,现在如果客户端明确说我想使用较低版本的 TLS,但从服务器你正在阻止旧版本,客户端根本不会升级版本。在这种情况下,请求将被拒绝。