From edb617d0fe19c81090fb353a31a620513c9f95b3 Mon Sep 17 00:00:00 2001 From: Matt Proud Date: Fri, 11 Oct 2024 16:46:01 +0100 Subject: [PATCH] switch get_thumb to use context.wrap_socket due to removal of ssl.wrap_socket in python 3.12 Signed-off-by: Matt Proud --- .../modules/nsxt_fabric_compute_managers.py | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/plugins/modules/nsxt_fabric_compute_managers.py b/plugins/modules/nsxt_fabric_compute_managers.py index b52d37fb..71444ca0 100755 --- a/plugins/modules/nsxt_fabric_compute_managers.py +++ b/plugins/modules/nsxt_fabric_compute_managers.py @@ -150,26 +150,28 @@ def get_fabric_compute_manager_params(args=None): return args def get_thumb(module): + context = ssl.SSLContext() + context.check_hostname = False sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) - wrappedSocket = ssl.wrap_socket(sock) try: - wrappedSocket.connect((module.params['server'], 443)) + wrapped_socket = context.wrap_socket(sock, server_hostname=module.params['server']) + wrapped_socket.connect((module.params['server'], 443)) except: - module.fail_json(msg='Connection error while fatching thumbprint for server [%s].' % module.params['server']) + module.fail_json(msg='Connection error while fatching thumbprint for server [%s].' % module.params['server']) else: - der_cert_bin = wrappedSocket.getpeercert(True) - pem_cert = ssl.DER_cert_to_PEM_cert(wrappedSocket.getpeercert(True)) - print(pem_cert) + der_cert_bin = wrapped_socket.getpeercert(True) + pem_cert = ssl.DER_cert_to_PEM_cert(wrapped_socket.getpeercert(True)) + print(pem_cert) - #Thumbprint - thumb_sha256 = hashlib.sha256(der_cert_bin).hexdigest() - wrappedSocket.close() - # The API call expects the Thumbprint in Uppercase. While the API call is fixed, - # below is a quick fix - thumbprint = "" - thumbprint = ':'.join(a+b for a,b in zip(thumb_sha256[::2], thumb_sha256[1::2])) - return thumbprint.upper() + #Thumbprint + thumb_sha256 = hashlib.sha256(der_cert_bin).hexdigest() + wrapped_socket.close() + # The API call expects the Thumbprint in Uppercase. While the API call is fixed, + # below is a quick fix + thumbprint = "" + thumbprint = ':'.join(a+b for a,b in zip(thumb_sha256[::2], thumb_sha256[1::2])) + return thumbprint.upper() def get_fabric_compute_managers(module, manager_url, mgr_username, mgr_password, validate_certs): try: