无法选择加密算法

0 投票
1 回答
7904 浏览
提问于 2025-04-16 09:31

我在用 Python 2.7 和 Win XP 时,遇到了用 IDEA-CBC-SHA 进行 SSL 连接的问题。

这是我的代码:

ciphers = "IDEA-CBC-SHA"

ssl_sock = ssl.wrap_socket(self.sock,
                           keyfile  = keyfile,
                           certfile = certfile,
                           ciphers  = ciphers)

ssl_sock.connect((address, port))

这是运行后的结果:

SSLError: _ssl.c:319: No cipher can be selected.

当我查询 openssl 时,看到 IDEA-CBC-SHA 是列出的加密方式之一。

OpenSSL> ciphers
DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DES-CBC3-MD5:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:IDEA-CBC-SHA:IDEA-CBC-MD5:RC2-CBC-MD5:RC4-SHA:RC4-MD5:RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:DES-CBC-MD5:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC2-CBC-MD5:EXP-RC4-MD5:EXP-RC4-MD5

我还测试了其他几种加密方式(比如 DES-CBC3-SHA、RC4-SHA、AES256-SHA、AES128-SHA),它们都能正常工作。

你知道为什么我的 SSL 连接在使用这个特定的加密方式时会失败吗?

有没有办法禁用(然后再启用)某些加密方式呢?

谢谢!

1 个回答

2

有没有人知道为什么我的SSL连接在这个特定的加密方式下会失败呢?

可能是你连接的服务器不支持IDEA这种加密方式。你可以通过抓包来确认这一点。

补充说明:在SSL连接中,客户端会提出一份它愿意使用的加密方式列表。然后服务器会从这个列表中选择一个它能接受的选项。如果服务器对客户端提出的选项都不满意,那么连接就会失败,因为服务器无法选择合适的加密方式

撰写回答