为什么相互认证在 openssl 1.1.0g 上可以运行,但在 openssl 1.1.1 上却不行?

为什么相互认证在 openssl 1.1.0g 上可以运行,但在 openssl 1.1.1 上却不行?

我正在使用相互身份验证发出 HTTPS 请求。使用 openssl 1.1.0g 和 curl 7.58.0 对其进行测试,它运行良好。使用相同 curl 版本升级到 openssl 1.1.1 后,调用停止工作并出现“不适当的回退”错误。

使用 wireshark,我推测问题可能与 openssl 在版本 1.1.1 中提供 TLSv1.3 但在 1.1.0g 中不提供有关。服务器只允许 TLSv1.2。但是,我为 curl 提供了“--tlsv1.2”选项,而 openssl 似乎仍然提供 TLSv1.3 和 TLSv1.2,而服务器拒绝 TLSv1.3 且没有后备方案。

我的问题是,这是否是版本 1.1.0g 和 1.1.1 之间已知的行为变化,我该怎么做才能强制 openssl 仅将 tlsv1.2 与 curl 一起使用?

非常感谢,伊恩

附言:我查阅了 1.1.0g 和 1.1.1 之间的许多更新日志,但没有找到答案。

答案1

看起来这是 curl 中的一个错误,在 7.58 之后已修复。

我认为在这种情况下避免使用 TLS 1.3 的正确选项实际上是“--tls-max 1.2”,但无论如何这个错误似乎仍然存在。您可以同时使用“--tlsv1.2”和“--tls-max 1.2”。

链接至 Daniel Stenberg,其中指出这些开关在该版本中可能无法按预期工作:

可以确认,编译最新的 curl 后,它现在可以工作,并且当我的 curl/openssl 配置支持 1.3 时,我可以明确使用 TLS 1.2。

相关内容