Skip to content

Commit d6b8ae5

Browse files
authored
Merge branch 'ansible-collections:main' into vmware_cluster_ha
2 parents 3039365 + 754e6c1 commit d6b8ae5

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
bugfixes:
2+
- module_utils/vmware.py - remove ssl.wrap_socet() function. Replaced for code based on ssl.get_server_certificate
3+
(https://github.com/ansible-collections/community.vmware/issues/1930).

plugins/module_utils/vmware.py

+11-12
Original file line numberDiff line numberDiff line change
@@ -1174,9 +1174,9 @@ def vcenter_version_at_least(self, version=None):
11741174
self.module.fail_json(msg='The passed vCenter version: %s is None.' % version)
11751175

11761176
def get_cert_fingerprint(self, fqdn, port, proxy_host=None, proxy_port=None):
1177-
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1178-
sock.settimeout(1)
11791177
if proxy_host:
1178+
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1179+
sock.settimeout(1)
11801180
sock.connect((
11811181
proxy_host,
11821182
proxy_port))
@@ -1191,17 +1191,16 @@ def get_cert_fingerprint(self, fqdn, port, proxy_host=None, proxy_port=None):
11911191
der_cert_bin = ctx.wrap_socket(sock, server_hostname=fqdn).getpeercert(True)
11921192
sock.close()
11931193
else:
1194-
wrapped_socket = ssl.wrap_socket(sock)
11951194
try:
1196-
wrapped_socket.connect((fqdn, port))
1197-
except socket.error as socket_error:
1198-
self.module.fail_json(msg="Cannot connect to host : %s" % socket_error)
1199-
else:
1200-
der_cert_bin = wrapped_socket.getpeercert(True)
1201-
wrapped_socket.close()
1202-
1203-
string = str(hashlib.sha1(der_cert_bin).hexdigest())
1204-
return ':'.join(a + b for a, b in zip(string[::2], string[1::2]))
1195+
pem = ssl.get_server_certificate((fqdn, port))
1196+
except Exception:
1197+
self.module.fail_json(msg=f"Cannot connect to host: {fqdn}")
1198+
der_cert_bin = ssl.PEM_cert_to_DER_cert(pem)
1199+
if der_cert_bin:
1200+
string = str(hashlib.sha1(der_cert_bin).hexdigest())
1201+
return ':'.join(a + b for a, b in zip(string[::2], string[1::2]))
1202+
else:
1203+
self.module.fail_json(msg=f"Unable to obtain certificate fingerprint for host: {fqdn}")
12051204

12061205
def get_managed_objects_properties(self, vim_type, properties=None):
12071206
"""

0 commit comments

Comments
 (0)