Чтобы проверить версию протокола TLS, согласованную в вашем соединении, вы можете позвонить по номеру oscon.get_protocol_version_name()
. Чтобы предотвратить использование SSLv2 / v3, вы можете использовать флаги OpenSSL.SSL.OP_NO_SSLv2
и OpenSSL.SSL.OP_NO_SSLv2
при настройке параметров подключения set_options()
. Если вам нужно ограничить ваше соединение, чтобы использовать только SSLv2 / v3 - установите параметры OpenSSL.SSL.OP_NO_TLSv1, OpenSSL.SSL.OP_NO_TLSv1_1, OpenSSL.SSL.OP_NO_TLSv1_2, OpenSSL.SSL.OP_NO_TLSv1_3
. Оплачивая эти параметры, вы можете полностью контролировать TLS-версию своего соединения.
Вот как я бы использовал его в вашем фрагменте кода:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
osobj = SSL.Context(SSL.SSLv23_METHOD)
osobj.set_options(OpenSSL.SSL.OP_NO_TLSv1 | OpenSSL.SSL.OP_NO_TLSv1_1 | OpenSSL.SSL.OP_NO_TLSv1_2 | OpenSSL.SSL.OP_NO_TLSv1_3)
sock.connect(("google.com", int(443)))
oscon = SSL.Connection(osobj, sock)
oscon.set_connect_state()
try:
oscon.do_handshake()
print("SSL v2/v3 supported")
except OpenSSL.SSL.Error as err:
if err.args[0][0][2] == "no protocols available":
print("SSL v2/v3 is not supported")