@@ -1174,9 +1174,9 @@ def vcenter_version_at_least(self, version=None):
1174
1174
self .module .fail_json (msg = 'The passed vCenter version: %s is None.' % version )
1175
1175
1176
1176
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 )
1179
1177
if proxy_host :
1178
+ sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
1179
+ sock .settimeout (1 )
1180
1180
sock .connect ((
1181
1181
proxy_host ,
1182
1182
proxy_port ))
@@ -1191,17 +1191,16 @@ def get_cert_fingerprint(self, fqdn, port, proxy_host=None, proxy_port=None):
1191
1191
der_cert_bin = ctx .wrap_socket (sock , server_hostname = fqdn ).getpeercert (True )
1192
1192
sock .close ()
1193
1193
else :
1194
- wrapped_socket = ssl .wrap_socket (sock )
1195
1194
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 } " )
1205
1204
1206
1205
def get_managed_objects_properties (self , vim_type , properties = None ):
1207
1206
"""
0 commit comments