【问题标题】:ssl.SSLError: ('No cipher can be selected') When Trying to Set TLS1.3 Cipher Suites in Python SSLssl.SSLError: ('No cipher can be selected') 尝试在 Python SSL 中设置 TLS1.3 密码套件时
【发布时间】:2019-11-04 11:39:46
【问题描述】:

我在尝试为 python 中的 ssl 上下文设置 TLS1.3 密码时遇到问题,尤其是“TLS_AES_128_CCM_SHA256”。

操作系统:Windows 7

Python 版本:3.7.4

OpenSSL 版本:1.1.1c

默认情况下,当我不设置密码套件时,可以在 TLS 握手中看到客户端确实提供了一些 TLS1.3 密码,但不是我需要的。

import ssl

if __name__ == '__main__':
    ctx = ssl.SSLContext(ssl.PROTOCOL_TLS)
    ctx.set_ciphers('TLS_AES_128_CCM_SHA256')
    print(ctx.get_ciphers())

我收到的错误:

ssl.SSLError:('No cipher can be selected.',)

【问题讨论】:

  • 您必须选择一组密码,其中至少有一个项目与客户支持的项目相同。我还注意到它被称为 set_ciphers。如果需要一个序列,则该字符串可能会被解释为单个字符的序列。尝试在) 之前加一个逗号。
  • 1.客户端支持这些密码,但我还没有尝试建立握手。首先,我尝试设置密码套件。 2. set_ciphers 函数支持单一密码套件。它适用于其他密码。这个的语法也是 set_ciphers('cipherSuite_A:cipherSuite_B:...')
  • 您是否设法与此 TLS_AES_128_CCM_SHA256 建立握手?我是否面临同样的问题,我想使用 PSK-NULL-SHA256 但在密码套件列表中看不到

标签: python openssl pyopenssl tls1.3 ccm


【解决方案1】:

这是因为 set_ciphers 不适用于 TLSv1.3,因此您无法启用或禁用这些密码套件(在您的示例中,“TLS_AES_128_CCM_SHA256”就是其中之一。)

来源 = https://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_ciphers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-21
    • 2020-01-24
    • 1970-01-01
    • 2017-05-13
    • 2010-10-21
    • 2016-11-17
    • 1970-01-01
    相关资源
    最近更新 更多