更新: do_handshake が暗号リストをリセットしているようです
確かにこれは非常に具体的なシナリオですが、誰かがアイデアを持っているかもしれません。サーバーが RC4-SHA のみを受け入れるように強制しようとしています (デバッグの理由のみ)。私のコードは次のようになります。
ctx.set_cipher_list('RC4-SHA')
self.connection = SSL.Connection(ctx, self.connection)
print self.connection.getpeername(), self.connection.get_cipher_list()
印刷物によると、すべてが機能し、実際に接続は RC4-SHA でセットアップされています。ただし、Wireshark を見ると、サーバーが別のスイート (TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)) で応答したことがわかります。言うまでもなく、クライアントは TLS_RSA_WITH_RC4_128_SHA (0x0005) を提案したので、使用しない理由はありませんでした。
Python 2.7、pyOpenSSL 0.13、OpenSSL 1.0.1e を使用しています。私が取り組んでいるコードは、mitmproxy の一部です。
何か案は?