try unverified retrieval if ssl.SSLCertVerificationError or ssl.SSLError with CERTIFICATE_VERIFY_FAILED

This commit is contained in:
Michael Ligh
2020-01-22 19:19:48 +00:00
committed by ikelos
parent ddfd5ec2d2
commit d6c8ac87d7
+5 -1
View File
@@ -70,7 +70,11 @@ class ResourceAccessor(object):
fp = urllib.request.urlopen(url, context = self._context)
except error.URLError as excp:
if excp.args:
if isinstance(excp.args[0], ssl.SSLCertVerificationError):
unverified_retrieval = (hasattr(ssl, "SSLCertVerificationError") and isinstance(excp.args[0],
ssl.SSLCertVerificationError)) or (
isinstance(excp.args[0], ssl.SSLError) and excp.args[
0].reason == "CERTIFICATE_VERIFY_FAILED")
if unverified_retrieval:
vollog.warning("SSL certificate verification failed: attempting UNVERIFIED retrieval")
non_verifying_ctx = ssl.SSLContext()
non_verifying_ctx.check_hostname = False