无法选择加密算法
我在用 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连接中,客户端会提出一份它愿意使用的加密方式列表。然后服务器会从这个列表中选择一个它能接受的选项。如果服务器对客户端提出的选项都不满意,那么连接就会失败,因为服务器无法选择合适的加密方式。