PEP-0476 introduced more thorough certificate chain verfication
for HTTPS connectivity; this was introduced in Python 2.7.9, and
breaks a number of unit tests in the neutron codebase.
Disable certificate chain verification for keystone SSL tests
using the backwards compatible SSLContext provided for this
purpose.
Change-Id: I25859d8981a022b4f625ce57ecd28da3820a7b17
Closes-Bug: #
1403068
import os
import socket
+import ssl
import urllib2
import mock
def open_no_proxy(*args, **kwargs):
- opener = urllib2.build_opener(urllib2.ProxyHandler({}))
+ # NOTE(jamespage):
+ # Deal with more secure certification chain verficiation
+ # introduced in python 2.7.9 under PEP-0476
+ # https://github.com/python/peps/blob/master/pep-0476.txt
+ if hasattr(ssl, "_create_unverified_context"):
+ opener = urllib2.build_opener(
+ urllib2.ProxyHandler({}),
+ urllib2.HTTPSHandler(context=ssl._create_unverified_context())
+ )
+ else:
+ opener = urllib2.build_opener(urllib2.ProxyHandler({}))
return opener.open(*args, **kwargs)