【问题标题】:How do I support TLS 1.1 and 1.2 only (in my webservice)?如何仅支持 TLS 1.1 和 1.2(在我的网络服务中)?
【发布时间】:2016-08-29 13:58:01
【问题描述】:

this question 中,我询问了有关在 Delphi XE2 下为我的 Web 服务限制可用 SSL/TLS 协议的问题。
通过使用TIdServerIOHandlerSSLOpenSSL 组件并将其SSLOptions.SSLVersions 属性设置为[sslvSSLv23,sslvTLSv1],我能够将可用协议限制为TLS 1.x。

现在,在升级到 Delphi Seattle Upgrade 1 后,我想进一步将其限制为仅限 TLS 1.1 和 1.2:

LIOHandleSSL.SSLOptions.SSLVersions := [sslvTLSv1_1,sslvTLSv1_2];

但这根本不起作用。尝试连接时,我得到一个

exception class EidOSSLUnderlying CryptoError with message
'Error accepting connection with SSL. error: 140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol'

Error connecting with SSL
EOF was observed that violates the protocol

这里发生了什么?如何解决?

注意事项:

  • 使用 OpenSSL 1.02f 和 1.02h 测试
  • 设置“旧”组合 [sslvSSLv23,sslvTLSv1] 有效
  • 包括 TLS 1.0 也可以:[sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2]

【问题讨论】:

    标签: delphi ssl openssl indy delphi-10-seattle


    【解决方案1】:

    我个人只会将 SSLVersion 保持为默认值并使用 SSLOptions.CipherList 来限制 SSL,只使用已知的 secure ciphers

    LIOHandleSSL.SSLOptions.CipherList := 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    

    这应该隐式禁用较旧的 SSL 版本,因为它们不支持指定的密码 AFAIK。

    请注意,OpenSSL 1.0.2g+ 默认禁用 SSLv3,除非在编译期间明确激活它。

    【讨论】:

    • ps。 sslvSSLv23 是“无关”方法,它支持编译成 OpenSSL 的 所有 SSL 版本。
    • 聪明的想法。请注意,我仍然必须指定LIOHandleSSL.SSLOptions.SSLVersions := [sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2]; sslvSSLv23),因为默认值为sslvTLSv1 only。因为 a) 我们建议我们的用户使用最新的 OpenSSL(当前为 1.02h) - 这意味着 SSL 2/3 已禁用,并且 b) 我们仍然需要支持 Android 4 我使用您的 中级兼容性 列表没有 SSL3 密码的链接。剩下 18 个(初步测试显示只有 8 个,但这是另一个与 Indy 不支持所有内容有关的故事 - 例如 forums.embarcadero.com/thread.jspa?threadID=115075
    • SSLVersions 属性中指定多个版本会导致 Indy 在内部使用 sslvSSLv23 并禁用任何未指定的版本。指定 [sslvTLSv1_1,sslvTLSv1_2] 应该可以正常工作,前提是您使用的是 最新 版本的 Indy(西雅图不附带最新版本)和 OpenSSL。在西雅图发布后,Indy 对 OpenSSL 1.0.2g+ 的处理进行了更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2016-02-07
    相关资源
    最近更新 更多