Fix unit tests with urllib3 2.x

urllib3 was recently bumped to 2.x[1] in global upper constraints.
Adopt the unit tests to fix a few new errors.

The key points are
 - It now strictly requires byte response
 - It ignores CN to verify SSL certificates and we should add SAN

Also leave the script to generate test certificates and keys so that
we can adjust these in the future more easily.

[1] https://review.opendev.org/c/openstack/requirements/+/972462

Change-Id: I4ed7182ad38593554b0ac7cbdb63af85d984371d
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
(cherry picked from commit e02b6b449ca0a93197608d3adfabf4e3e646a762)
This commit is contained in:
Takashi Kajinami
2026-03-09 00:48:53 +09:00
parent b9e5198f0d
commit d53dd3e075
9 changed files with 226 additions and 278 deletions
+7 -7
View File
@@ -318,7 +318,7 @@ class TestClient(testtools.TestCase):
def test_http_chunked_request(self): def test_http_chunked_request(self):
text = "Ok" text = "Ok"
data = io.StringIO(text) data = io.BytesIO(text.encode())
path = '/v1/images/' path = '/v1/images/'
self.mock.post(self.endpoint + path, text=text) self.mock.post(self.endpoint + path, text=text)
@@ -341,9 +341,9 @@ class TestClient(testtools.TestCase):
self.assertEqual(data, json.loads(self.mock.last_request.body)) self.assertEqual(data, json.loads(self.mock.last_request.body))
def test_http_chunked_response(self): def test_http_chunked_response(self):
data = "TEST" data = b"TEST"
path = '/v1/images/' path = '/v1/images/'
self.mock.get(self.endpoint + path, body=io.StringIO(data), self.mock.get(self.endpoint + path, body=io.BytesIO(data),
headers={"Content-Type": "application/octet-stream"}) headers={"Content-Type": "application/octet-stream"})
resp, body = self.client.get(path) resp, body = self.client.get(path)
@@ -353,10 +353,10 @@ class TestClient(testtools.TestCase):
@original_only @original_only
def test_log_http_response_with_non_ascii_char(self): def test_log_http_response_with_non_ascii_char(self):
try: try:
response = 'Ok' response = b'Ok'
headers = {"Content-Type": "text/plain", headers = {"Content-Type": "text/plain",
"test": "value1\xa5\xa6"} "test": "value1\xa5\xa6"}
fake = utils.FakeResponse(headers, io.StringIO(response)) fake = utils.FakeResponse(headers, io.BytesIO(response))
self.client.log_http_response(fake) self.client.log_http_response(fake)
except UnicodeDecodeError as e: except UnicodeDecodeError as e:
self.fail("Unexpected UnicodeDecodeError exception '%s'" % e) self.fail("Unexpected UnicodeDecodeError exception '%s'" % e)
@@ -457,9 +457,9 @@ class TestClient(testtools.TestCase):
def test_log_request_id_once(self): def test_log_request_id_once(self):
logger = self.useFixture(fixtures.FakeLogger(level=logging.DEBUG)) logger = self.useFixture(fixtures.FakeLogger(level=logging.DEBUG))
data = "TEST" data = b"TEST"
path = '/v1/images/' path = '/v1/images/'
self.mock.get(self.endpoint + path, body=io.StringIO(data), self.mock.get(self.endpoint + path, body=io.BytesIO(data),
headers={"Content-Type": "application/octet-stream", headers={"Content-Type": "application/octet-stream",
'x-openstack-request-id': "1234"}) 'x-openstack-request-id': "1234"})
+9 -9
View File
@@ -77,7 +77,7 @@ class TestHTTPSVerifyCert(testtools.TestCase):
def test_v1_requests_cert_verification(self, __): def test_v1_requests_cert_verification(self, __):
"""v1 regression test for bug 115260.""" """v1 regression test for bug 115260."""
port = self.port port = self.port
url = 'https://0.0.0.0:%d' % port url = 'https://127.0.0.1:%d' % port
try: try:
client = v1.Client(url, client = v1.Client(url,
@@ -94,7 +94,7 @@ class TestHTTPSVerifyCert(testtools.TestCase):
"""v1 regression test for bug 115260.""" """v1 regression test for bug 115260."""
# Legacy test. Verify 'no compression' has no effect # Legacy test. Verify 'no compression' has no effect
port = self.port port = self.port
url = 'https://0.0.0.0:%d' % port url = 'https://127.0.0.1:%d' % port
try: try:
client = v1.Client(url, client = v1.Client(url,
@@ -110,7 +110,7 @@ class TestHTTPSVerifyCert(testtools.TestCase):
def test_v2_requests_cert_verification(self, __): def test_v2_requests_cert_verification(self, __):
"""v2 regression test for bug 115260.""" """v2 regression test for bug 115260."""
port = self.port port = self.port
url = 'https://0.0.0.0:%d' % port url = 'https://127.0.0.1:%d' % port
try: try:
gc = v2.Client(url, gc = v2.Client(url,
@@ -127,7 +127,7 @@ class TestHTTPSVerifyCert(testtools.TestCase):
"""v2 regression test for bug 115260.""" """v2 regression test for bug 115260."""
# Legacy test. Verify 'no compression' has no effect # Legacy test. Verify 'no compression' has no effect
port = self.port port = self.port
url = 'https://0.0.0.0:%d' % port url = 'https://127.0.0.1:%d' % port
try: try:
gc = v2.Client(url, gc = v2.Client(url,
@@ -143,7 +143,7 @@ class TestHTTPSVerifyCert(testtools.TestCase):
def test_v2_requests_valid_cert_verification(self, __): def test_v2_requests_valid_cert_verification(self, __):
"""Test absence of SSL key file.""" """Test absence of SSL key file."""
port = self.port port = self.port
url = 'https://0.0.0.0:%d' % port url = 'https://127.0.0.1:%d' % port
cacert = os.path.join(TEST_VAR_DIR, 'ca.crt') cacert = os.path.join(TEST_VAR_DIR, 'ca.crt')
try: try:
@@ -160,7 +160,7 @@ class TestHTTPSVerifyCert(testtools.TestCase):
def test_v2_requests_valid_cert_verification_no_compression(self, __): def test_v2_requests_valid_cert_verification_no_compression(self, __):
"""Test VerifiedHTTPSConnection: absence of SSL key file.""" """Test VerifiedHTTPSConnection: absence of SSL key file."""
port = self.port port = self.port
url = 'https://0.0.0.0:%d' % port url = 'https://127.0.0.1:%d' % port
cacert = os.path.join(TEST_VAR_DIR, 'ca.crt') cacert = os.path.join(TEST_VAR_DIR, 'ca.crt')
try: try:
@@ -177,7 +177,7 @@ class TestHTTPSVerifyCert(testtools.TestCase):
def test_v2_requests_valid_cert_no_key(self, __): def test_v2_requests_valid_cert_no_key(self, __):
"""Test VerifiedHTTPSConnection: absence of SSL key file.""" """Test VerifiedHTTPSConnection: absence of SSL key file."""
port = self.port port = self.port
url = 'https://0.0.0.0:%d' % port url = 'https://127.0.0.1:%d' % port
cert_file = os.path.join(TEST_VAR_DIR, 'certificate.crt') cert_file = os.path.join(TEST_VAR_DIR, 'certificate.crt')
cacert = os.path.join(TEST_VAR_DIR, 'ca.crt') cacert = os.path.join(TEST_VAR_DIR, 'ca.crt')
@@ -196,7 +196,7 @@ class TestHTTPSVerifyCert(testtools.TestCase):
def test_v2_requests_bad_cert(self, __): def test_v2_requests_bad_cert(self, __):
"""Test VerifiedHTTPSConnection: absence of SSL key file.""" """Test VerifiedHTTPSConnection: absence of SSL key file."""
port = self.port port = self.port
url = 'https://0.0.0.0:%d' % port url = 'https://127.0.0.1:%d' % port
cert_file = os.path.join(TEST_VAR_DIR, 'badcert.crt') cert_file = os.path.join(TEST_VAR_DIR, 'badcert.crt')
cacert = os.path.join(TEST_VAR_DIR, 'ca.crt') cacert = os.path.join(TEST_VAR_DIR, 'ca.crt')
@@ -219,7 +219,7 @@ class TestHTTPSVerifyCert(testtools.TestCase):
def test_v2_requests_bad_ca(self, __): def test_v2_requests_bad_ca(self, __):
"""Test VerifiedHTTPSConnection: absence of SSL key file.""" """Test VerifiedHTTPSConnection: absence of SSL key file."""
port = self.port port = self.port
url = 'https://0.0.0.0:%d' % port url = 'https://127.0.0.1:%d' % port
cacert = os.path.join(TEST_VAR_DIR, 'badca.crt') cacert = os.path.join(TEST_VAR_DIR, 'badca.crt')
try: try:
+33 -31
View File
@@ -1,36 +1,38 @@
# DO NOT EDIT. This file is generated by tools/generate_test_certs.sh
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIGVTCCBD2gAwIBAgIUEstxpjoCFDZo8K1Mmz7QIpYwSXIwDQYJKoZIhvcNAQEL MIIGYzCCBEugAwIBAgIUVH2HK/6/Au6Gf7JYvFM+Rps4J94wDQYJKoZIhvcNAQEL
BQAwgbgxCzAJBgNVBAYTAkFVMREwDwYDVQQIDAhTdGF0ZSBDQTELMAkGA1UEBwwC BQAwgbgxCzAJBgNVBAYTAkFVMREwDwYDVQQIDAhTdGF0ZSBDQTELMAkGA1UEBwwC
Q0ExGTAXBgNVBAoMEE9wZW5TdGFjayBDQSBPcmcxGjAYBgNVBAsMEU9wZW5TdGFj Q0ExGTAXBgNVBAoMEE9wZW5TdGFjayBDQSBPcmcxGjAYBgNVBAsMEU9wZW5TdGFj
ayBUZXN0IENBMS0wKwYDVQQDDCRPcGVuc3RhY2sgVGVzdCBDZXJ0aWZpY2F0ZSBB ayBUZXN0IENBMS0wKwYDVQQDDCRPcGVuc3RhY2sgVGVzdCBDZXJ0aWZpY2F0ZSBB
dXRob3JpdHkxIzAhBgkqhkiG9w0BCQEWFGFkbWluQGNhLmV4YW1wbGUuY29tMCAX dXRob3JpdHkxIzAhBgkqhkiG9w0BCQEWFGFkbWluQGNhLmV4YW1wbGUuY29tMB4X
DTIwMDQwNzEyMjYwMVoYDzI5OTkwMTAxMTIyNjAxWjCBuDELMAkGA1UEBhMCQVUx DTI2MDMwOTE1MjYyMloXDTM2MDMwNjE1MjYyMlowgbgxCzAJBgNVBAYTAkFVMREw
ETAPBgNVBAgMCFN0YXRlIENBMQswCQYDVQQHDAJDQTEZMBcGA1UECgwQT3BlblN0 DwYDVQQIDAhTdGF0ZSBDQTELMAkGA1UEBwwCQ0ExGTAXBgNVBAoMEE9wZW5TdGFj
YWNrIENBIE9yZzEaMBgGA1UECwwRT3BlblN0YWNrIFRlc3QgQ0ExLTArBgNVBAMM ayBDQSBPcmcxGjAYBgNVBAsMEU9wZW5TdGFjayBUZXN0IENBMS0wKwYDVQQDDCRP
JE9wZW5zdGFjayBUZXN0IENlcnRpZmljYXRlIEF1dGhvcml0eTEjMCEGCSqGSIb3 cGVuc3RhY2sgVGVzdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxIzAhBgkqhkiG9w0B
DQEJARYUYWRtaW5AY2EuZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4IC 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
VAPX6MRWpQ==
-----END CERTIFICATE----- -----END CERTIFICATE-----
+34 -32
View File
@@ -1,34 +1,36 @@
# DO NOT EDIT. This file is generated by tools/generate_test_certs.sh
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIF3TCCA8UCFApiIYk0jePQYtuj9aOTINDiado4MA0GCSqGSIb3DQEBCwUAMIG4 MIIGIjCCBAqgAwIBAgIUa8IbpYTnevi57LCXS/7RHHMAhEQwDQYJKoZIhvcNAQEL
MQswCQYDVQQGEwJBVTERMA8GA1UECAwIU3RhdGUgQ0ExCzAJBgNVBAcMAkNBMRkw BQAwgbgxCzAJBgNVBAYTAkFVMREwDwYDVQQIDAhTdGF0ZSBDQTELMAkGA1UEBwwC
FwYDVQQKDBBPcGVuU3RhY2sgQ0EgT3JnMRowGAYDVQQLDBFPcGVuU3RhY2sgVGVz Q0ExGTAXBgNVBAoMEE9wZW5TdGFjayBDQSBPcmcxGjAYBgNVBAsMEU9wZW5TdGFj
dCBDQTEtMCsGA1UEAwwkT3BlbnN0YWNrIFRlc3QgQ2VydGlmaWNhdGUgQXV0aG9y ayBUZXN0IENBMS0wKwYDVQQDDCRPcGVuc3RhY2sgVGVzdCBDZXJ0aWZpY2F0ZSBB
aXR5MSMwIQYJKoZIhvcNAQkBFhRhZG1pbkBjYS5leGFtcGxlLmNvbTAgFw0yMDA0 dXRob3JpdHkxIzAhBgkqhkiG9w0BCQEWFGFkbWluQGNhLmV4YW1wbGUuY29tMB4X
MDcxMjMxMjFaGA8yOTk5MDEwMTEyMzEyMVowgZoxCzAJBgNVBAYTAlVTMQswCQYD DTI2MDMwOTE1MjYyMloXDTM2MDMwNjE1MjYyMlowgYcxCzAJBgNVBAYTAkFVMREw
VQQIDAJDQTEPMA0GA1UEBwwGU3RhdGUxMRswGQYDVQQKDBJPcGVuU3RhY2sgVGVz DwYDVQQIDAhTdGF0ZSBDQTEPMA0GA1UEBwwGU3RhdGUxMRswGQYDVQQKDBJPcGVu
dCBPcmcxHDAaBgNVBAsME09wZW5TdGFjayBUZXN0IFVuaXQxEDAOBgNVBAMMBzAu U3RhY2sgVGVzdCBPcmcxHDAaBgNVBAsME09wZW5TdGFjayBUZXN0IFVuaXQxGTAX
MC4wLjAxIDAeBgkqhkiG9w0BCQEWEWFkbWluQGV4YW1wbGUuY29tMIICIjANBgkq BgNVBAMMEHRlc3QuZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvwpYRmNTJsZASu0XKwcRNRU7JlMlWwFM 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
9l4gwJ1ojNB2abF4LOEf5bU= /wZxdtLFpYOueAYrMgbOQOVfVxA4tfFD7hQuWr8VIRahDyjhb+rsH533xllDkDLB
zHpRA3zDHjJXn8kP9DaNYo3tSBJQ9FzR6uQFexjqiTVwe4BBXi0=
-----END CERTIFICATE----- -----END CERTIFICATE-----
+34 -33
View File
@@ -1,35 +1,36 @@
# DO NOT EDIT. This file is generated by tools/generate_test_certs.sh
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIGFTCCA/2gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBuDEZMBcGA1UEChMQT3Bl MIIGIjCCBAqgAwIBAgIUa8IbpYTnevi57LCXS/7RHHMAhEUwDQYJKoZIhvcNAQEL
bnN0YWNrIENBIE9yZzEaMBgGA1UECxMRT3BlbnN0YWNrIFRlc3QgQ0ExIzAhBgkq BQAwgbgxCzAJBgNVBAYTAkFVMREwDwYDVQQIDAhTdGF0ZSBDQTELMAkGA1UEBwwC
hkiG9w0BCQEWFGFkbWluQGNhLmV4YW1wbGUuY29tMREwDwYDVQQHEwhTdGF0ZSBD Q0ExGTAXBgNVBAoMEE9wZW5TdGFjayBDQSBPcmcxGjAYBgNVBAsMEU9wZW5TdGFj
QTELMAkGA1UECBMCQ0ExCzAJBgNVBAYTAkFVMS0wKwYDVQQDEyRPcGVuc3RhY2sg ayBUZXN0IENBMS0wKwYDVQQDDCRPcGVuc3RhY2sgVGVzdCBDZXJ0aWZpY2F0ZSBB
VGVzdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTIxMTE1MTcwNjMzWhcNMTIx dXRob3JpdHkxIzAhBgkqhkiG9w0BCQEWFGFkbWluQGNhLmV4YW1wbGUuY29tMB4X
MTE2MTcwNjMzWjCBqDEbMBkGA1UEChMST3BlbnN0YWNrIFRlc3QgT3JnMRwwGgYD DTI2MDMwOTE1MjYyMloXDTI2MDMwOTE1MjYyMlowgYcxCzAJBgNVBAYTAkFVMREw
VQQLExNPcGVuc3RhY2sgVGVzdCBVbml0MSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBl DwYDVQQIDAhTdGF0ZSBDQTEPMA0GA1UEBwwGU3RhdGUxMRswGQYDVQQKDBJPcGVu
eGFtcGxlLmNvbTEPMA0GA1UEBxMGU3RhdGUxMQswCQYDVQQIEwJDQTELMAkGA1UE U3RhY2sgVGVzdCBPcmcxHDAaBgNVBAsME09wZW5TdGFjayBUZXN0IFVuaXQxGTAX
BhMCVVMxHjAcBgNVBAMTFW9wZW5zdGFjay5leGFtcGxlLmNvbTCCAiIwDQYJKoZI BgNVBAMMEHRlc3QuZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
hvcNAQEBBQADggIPADCCAgoCggIBANn9w82sGN+iALSlZ5/Odd5iJ3MAJ5BoalMG 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
l3+dFHnWayuCdqcFwIl3m8i8FupFihz9+A== 8oWEaI5553dfsp+sWW5UsC47N3YMUVCyrWX1/yX7Xc9RuuytF34=
-----END CERTIFICATE----- -----END CERTIFICATE-----
+53 -51
View File
@@ -1,51 +1,53 @@
-----BEGIN RSA PRIVATE KEY----- # DO NOT EDIT. This file is generated by tools/generate_test_certs.sh
MIIJKgIBAAKCAgEAvwpYRmNTJsZASu0XKwcRNRU7JlMlWwFM3x5qMMb9h77v/CxP -----BEGIN PRIVATE KEY-----
bMl4rjdFhPSqHm2Cc5J9dtihfRZFnwmfOlp2lahJMpC6xVadQU5tDChKICTM1MFw MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQCcc5oW+VurGaz9
jThrK1dK17wIzuOFVCUESWU7JpTTbT7GD05w/kozcEC8IzVuV43TY5srByXtJs8J KFHaO1DmQm2I7jUsYNsZK9+FnPJMxg836Zk3N1e9NDZiwQwXxgcU8yPEFdToqEJE
/m+G7rh2FI1+9a56xAQAlztYp6lWpzZpxohhgt2BFoqNNHalzdTI368+lk/OkzTr edxi827iQW+yOvZKwCewhyTosqWblxhOUEHPmCRB6gJlMzxUj3JKoBbZyoBp1bjp
QTXnXATZjFAm95q4I3z9uumAJlaUBzf0qNadYPOAKhdLOK1ly4WsmBl9DGhUVTC4 Mq8262fNVCxmwR7lMW6Fcmv1hrrtZY/BFA8h2j1RH8wIsSN+cQXyresXaP1hff67
177k+gK6sEXIZV3bgAWjhgALF84HqAYVxesrEj64HBFGRxYOiL7+CJQr27MGBsEq S/MKJWrQCcLL1MmBzD7ukbUaCaOmcCfhU10/2L99EtbZhc12DWxfWPdTs/wPwxPf
qzi7I4BkI2chIoG80XAORH+mGzv4ToB+in2LPNKWAy9A5X7huszZdg+O/pwjRwTq Wfuebv3T153B9sWSiIR2gClIFhm/moslbsDrlAmfhcPxLz6cUpWtqyk2kOXeoNiO
RpsNLpTQ/eeONuOJmQTlYNwRdNCVRQqkddOiZdP0McEuZw/rb5hgbos/HQnpD160 gPD+om98Q9SunokPFI9uLjSy/wkbXbW6/C14ay8c+044foTs6u2ACnKne9FricVB
4MNOC2xPK8uqGtHJkDyevRGeOpQH1FyJhWEDNDt/+T1O1C+2egvM1sOu6bJrrI4o 3p8zLhn5vtVAAE0koH8/aVUWkOD13lNLxIyz4kc24qwIUOjc/YLcYoCZw91A7TRF
o1Co2x+Fp2/ak/cx72n2+7KgpxnAQRwIpChh54X3MLGr8Zc22m+yghIzABiDNW48 QuHgm0A1GtBDIUg393fGsXMR8jXz6YOcI4tYobDKFXX3m8K79h3LgdKQismD/+hj
6S4xeCxa07sqOa5noFNt8rj5ylwHWVwmaW0rQxcTS6BKavopD+GsTBM0niECAwEA ZNOqgzYR7WH+6LMZw8ueXnBZzK0716iRC603dswUmUF5Ajz9YRWdGHn+MRdk3L4/
AQKCAgEAtK70Dp6iZmnbJQJYhzmH7MzHxNee3RO9wMjjZn7OCzVrhPXjqOBkY2Gj p3YZzLkpLf1itgMxoyYsdyPyYktr+n7cmf8mqCBi5P+qhdGZqFh+1haZX/f8ugqN
PryoqV6pouVKBL2e/s+xyVkwX+Bvh9xCXrDD9SCWWs3yFS2F7iDgGdlaujZCJhvJ 5Ev0LNUFQHBxGcPn4ascBXXW0N9gHwIDAQABAoICABkFdAi7QKnl+qtSSM+k2j9j
jYEqU4Kc95iLFV/JMhRQY2KbsJ5gACHtxJ11U1eVpPlelTaM25XjVnE64opY9C9C 3a4fSr8aORrsJVzHyQig9HYgv1xRVuWaSshoeiKjN9Fl7BEZh2oziXBM0lkQ+GmU
fu3Uxkjfk8S1SlO25dwjOMMeB8e1cjBNhyRDqPsOlj5KPkVgzIlut4u1dVemGkH7 cDoKVrGFzH3dtKLH+ix0HHMJ6uc55zKTgRE7rH5poqxvW2LhkWqxFQMBaXxYZyAz
/9lPAaAzyFzPHZj6u0fneWxS2d0hvDCRZz3gxxo4zOUA+FojCzkhifEq4eKKbmtm l2unnzql4+MmdZWtl9+3ynyP/2Dj98KDBK1Z3ISwVsnaftVzo8fKesmW+qZjbZMa
ZpGZl0XN9Kdgobwowbr7Qs9+iFKDyHtcDLFwWh0ShNgagkrmgk/e1MfPWW+6lbTa vIi/iKq1m6r+qql2DoeOkGeSXuuDIrzsx70U5SiS5QOAGwN2ru1maZs4V5bzHAKc
rqadFaMXdk4dfSaYqF+tJN+xgrtgerLCf8Z4u3eY/RZjwRXyWXZcGxQdfAtfckvl DU2kGzJgRa8eDXwgl2Wetc+lcufk+Spbc7GduLRk5i4BncnC9WsxlkYpi7bDC8k3
vb1Qv7CnZMIHlHxYiORUQ/ZmYhms/vQp56f7DjVwp5kqg9ONhkSvYQT4Npu7tARO 2fVfnfGmhFM57dlTs7IM3maVr8zXoNgADh5Jub2iJO8DxemrUyvDGWjGCwYIemZy
y5r1IoGVXgZJjvD1suN8kOf0FTfAXoJAiwyFT7VZraYf51kHCefLelz1a6VOnK8L MW9mOsZZRfx6rSA6L/Y5hp6GxKDd1bAkMTDhfYWgORS+RmXUHDYSAhCOLcwjfixk
r5RIPlbAH/BBots1Gon9BwBzPOBwlrHdQO6CfKW+ypWkAHv5jT4U/xg2hTuFgJIb InsVqb7DeYdliKwqTdi4fAnZLIFGSSEoYHHZY/wqYInfi7tBh1pzyOJr/V4HGL6g
hargYTPyHswtVNnwBucpoXHyvFzyuju/4dsvxYYIp+ntmHfd+oECggEBAOIgK6u0 OaPWHdqMdJdfcqtceJUU4l3JyENSihuPxOyqLnXI4PFhHRJXKAm1ba2Jq+B1feAA
wMyT9UFh9Ft4d3vk9AZZkZd9Y/1gN+X8bJFnzi3wuulokppaynAUA7pJnrnQj0OA IZzH+oL96OgEu0/RYJcDt2oaSqAxfXuBW70ikbzFzmehCJQHQC0/2vpLY3C6DzB3
3kyEgYh6ugS22+nRTrgyKMXbfi7J4i6teUL7oqi5WukmaGNZfdmYHdcgEX7vvDbi GFF2ncCjOiZh01Ya2O2BAoIBAQDTLtPuq2yHZAVyzbMnjt7A8xKURM6ORaKrzPza
WKEe2KetFvdYCrx6HTBQHxpFiE3jk2jkXygee2lHEwAIasWit3dX3SPAiLJXebqP xqDCg7cSNcKXabu9+NtGydlqaIrR4AAx/Z0sA92mzSB31F7SuBoZL4pxUPWVqsHx
I1h2QhcHZKGnxgd+ATuyFY/YDObrZkoe9JuiheLXEd+5JshKjTetbs+vYrBaFRio eFhp7kGRn0CP4Tlmh6gj+Azu9wo+6sH24GbewxD556e/WgtgzdT6lbRDhI083byP
8JlMrIxsBYj/ALaN/CUqEhoKfxwbHP3mV7xHiUDHwBbvz+DDZiTmSVXA1NIN0b4E btGjkbfhcnCCJjpj1/DfI2/8yF81p3gsqOlEmiXB25rP/USZLEXWFDabxPNct6Gp
izJq/1wnhZ8QUbsCggEBANhHjPRRHQecAWgR3Aehwlrw0H0UXbKaouaZP/OMV5LW K80t0XsxqjX/D7TNeMCu6/E8Xoe+tUdbyyYQ+z1PX2M/+wJkN3Oi6wYFTvrY5NvH
sSlzh3SUsxZbz99sXd7/UAqCXpsHhTaCRq8nhorUgOSV1GqeaP89l+bJnNU7rmww GbP6b/GaPo24PLEgT6+DdHQFoS+BxfKevuBQi10AmyBYvFHPAoIBAQC9p1KF+F+F
TWqosTdTK+T8LGJvO5IwBbCzuYfGWQlvS28877Sbf+w0PfV1jzlHnwFVMaegV2On C4Rj+CnYqE6j2UWZWcSdCrQ5JT4NpZAoexTtskqQqGJ+lrxBLkDldApZDAGlWtkQ
x2VZ9KGftUUDfgQ7URhMOd1Zm5uHI/oaaFQjGAbgAcXNJe9Giv/hlQEPOXtojBDk VXcKsLpbN+R7rV1OaLtO/55LoyIoxJeFDh3ovUuo2JO7n34Dsi4sq0IvUzzndmVW
9dFC/WWjesVm1Iv2gthPso2AnXcp8ifUTg0cXgGg3KiGFhNTen1xIe/AvTBasmpQ xOwwn2a9NvQiulhoFGwO+qdMr22kqJS/M8CEMwz8CUjAW9k2qAFcWdLNzUAKQRRF
Ymmx0uq1Y/vsjf9DGyL72Lu6atZwB//8QXoyKdFbM9MCggEBAL2Mag8M/XB/tl6Q YJkcg87uyHuF8sz7Btp9Xbx26sdx763KThMyXqELtQO30It1n4COT3081JLUhVlc
Vd03JjFcwpFwE3MBUQfb1/+ZkQhyE4q++G8fkYSCBp/cpyNJAxyPjwfuxmktycc1 RhRe4rOfnhKH9K5SPsK2nBJlF9DWhNmbyhFNS015lLFNhTZ56F3sIU720qqqdGPu
2SiKf92H7ozIvxTb4PInmMm38KYNeVQly+cUovxkz/HOaXUjFIdrPkJjihfFW6dy pm6ETr8cbDCxAoIBAQC0N1cGauWv2GxJ3z5OuL5hHE2zl9BJWyWJxOHW9QBFXk/B
mIXN73H+iukswGWtU4y276JFjN58bsbZJTwp0hbJRzFrHZwSkIOugAO6aM6Gku/q S31m5wUfBhpiG2jdRJ+KoMSp5IrW/+mMKarWd7X/zrn+2jIjp3ocId9l6FRS+c6c
6pf3ozA0l6QKq7hgSrBnMt9/A1xS6Bg2YG1BLxlGJQo+/1xokDlzyataMhTPCPTM rbFT11i7pXKYV1r6Jnlo3b9upWtEGGUJTmY5hmcFUkG5Ij32DEzXL0Z1hJWEJ5sq
t/cWiup8Kpico3/gvJw6vhq3M2RIMu1yg7q2W3L1WHIl9+NCOSO7Ic4+0M/6kQQW 2hUnC+ZyQ9o7Iau0pW2ShPqp6e8+6ujjuTsw2SpMKJrkKNW9MmKXseFUU5vByO1/
vRORAnECggEBAJP+WfBwdKnZUYkR93rtcF3kPPXp8redYuziXsVb+izLZg0UNdNL oYh4xHd/jNeprpFr+iOPXHWr4P34Kd7VOEqjU9pjmWqmEjhOGWs54nunOcj8I8Gi
UURybMrYj19hWzblwLDas4f6Gz4NkN38zXodIG4YmYZWclQFD6FFpnP3lXHvntxZ 5lTcb3acY0QdQyirkTTQYxM74xnbwkI4fSkqcHLDAoIBAQCK7LGXr3wREoG1VUka
uEaHXCO7M4sz+yDPypui2RhApOCoVOpEIYPSt7b3y5qJbL9vuXuXl1Tk4Od0Z5YU CxgoD/VawxYyT2/7WFufVYNHE/odsHfMhXw47KQUPxSMwDcASbo+7VCKFYDxFMo+
/+gKnLduk25J8qqJf5YsIi0o1s0D+pPxwqTEXTnfDoxLozdHYLEWeAmzcpXP/i8H HbBCJJlv4WosETVchLB2GqQ/dDrWjSuKELQPQWLmxDPsxrrhveCkUOck63V0nJ9+
b6IWXEit1RkJaAe1w4pgFIi2mPYVvCnnFjbnEcIFtGKUAIHbZFnrJfzjpoPmn4nl xW2KruQpwaPySQwaMXtonZDwirFgZaECUq63MdDop6LvimDQHqTlngyCUaN27tq7
t1YSp5PNKouEw+iphiPYI1FCHtfr7XuJqesCggEALuK1WEx+pDgN8YL89Lg/OGUH saJCWbxrufZ81RhEJ/FXddHhmtWXFRh1YfDKSnqN+/wIwxOjZrfz84alADTV2Mzp
jXJ/Es/BJXBcx+MaKuNs47sb8rc3Z7uMqkENRviqMmHn4DjpsnNvyQ8tAP8dOpPW hLpgWw0C9DRf3e3fndV9/q0E4L1R2HJ1OEW02nswS9XZLgEQ7vrTiBTX8ZSNWL3H
tubKRKC2YLsSju2Qocl+b8D9HMZwoBzzApvJBxPMXNBxikE56nPmlkteNHHeBD+0 zTzRAoIBAQC+4lRSsNf+mMYGmJHt7C46thXKFfK7vAccbnoamX5TZcaXxSaYfWjX
oKfpXxjvCyOUwoNllRlw7HIzNxgZOR64tKe8CdFO5Zb/lxxgRy854XoFwaMfAYiR Maump1qaObvel1RBzXfDC+MwqSufFVoQWETkNclZa5lJ34XCWCVYyYqN8dAsboLf
VbgzpHqvoPYC5UwDNQrkFxh5UBc5VlwRSmQ7NTfLFLWA6lT2iNSEZ9U1kVlhIs77 NeHUv1pQn0nYpk9evd4qdVZoZZs/2DU4xVC7npv70q3MtBuYWVjlhC9nXihUfbUn
dXoeEoOPy2KRFUcsOrVKEag8zWEogi40dHW1Iw5e4+vbHbF6RAnyQBmrBjIH/A== 5pL+Z2qdwuI88Cryju0aWQdukHF5DHnTJYH1YhCVeBrOGxFleI9+NQ5GzDzM09n7
-----END RSA PRIVATE KEY----- 2sUaB+BwVWxXtdQH0DzddzDMPMujGhNjPnfWEBe3v4xmqwNHo4MrHw9GLTT4Gm5n
blfeGXB9HbKj2/tdUT6DnyixuyDmv4DU
-----END PRIVATE KEY-----
@@ -1,61 +0,0 @@
#Certificate:
# Data:
# Version: 1 (0x0)
# Serial Number: 13493453254446411258 (0xbb42603e589dedfa)
# Signature Algorithm: sha1WithRSAEncryption
# Issuer: C=US, ST=CA, L=State1, O=Openstack Test Org, OU=Openstack Test Unit, CN=*.pong.example.com/emailAddress=admin@example.com
# Validity
# Not Before: Aug 21 17:29:18 2013 GMT
# Not After : Jul 28 17:29:18 2113 GMT
# Subject: C=US, ST=CA, L=State1, O=Openstack Test Org, OU=Openstack Test Unit, CN=*.pong.example.com/emailAddress=admin@example.com
# Subject Public Key Info:
# Public Key Algorithm: rsaEncryption
# Public-Key: (4096 bit)
# Modulus:
# 00:d4:bb:3a:c4:a0:06:54:31:23:5d:b0:78:5a:be:
# 45:44:ae:a1:89:86:11:d8:ca:a8:33:b0:4f:f3:e1:
# 46:1e:85:a3:2a:9c:a4:e0:c2:14:34:4f:91:df:dc:
# .
# .
# .
# Exponent: 65537 (0x10001)
# Signature Algorithm: sha1WithRSAEncryption
# 9f:cc:08:5d:19:ee:54:31:a3:57:d7:3c:89:89:c0:69:41:dd:
# 46:f8:73:68:ec:46:b9:fa:f5:df:f6:d9:58:35:d8:53:94:88:
# bd:36:a6:23:9e:0c:0d:89:62:35:91:49:b6:14:f4:43:69:3c:
# .
# .
# .
-----BEGIN CERTIFICATE-----
MIIFyjCCA7ICCQC7QmA+WJ3t+jANBgkqhkiG9w0BAQUFADCBpTELMAkGA1UEBhMC
VVMxCzAJBgNVBAgMAkNBMQ8wDQYDVQQHDAZTdGF0ZTExGzAZBgNVBAoMEk9wZW5z
dGFjayBUZXN0IE9yZzEcMBoGA1UECwwTT3BlbnN0YWNrIFRlc3QgVW5pdDEbMBkG
A1UEAwwSKi5wb25nLmV4YW1wbGUuY29tMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBl
eGFtcGxlLmNvbTAgFw0xMzA4MjExNzI5MThaGA8yMTEzMDcyODE3MjkxOFowgaUx
CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEPMA0GA1UEBwwGU3RhdGUxMRswGQYD
VQQKDBJPcGVuc3RhY2sgVGVzdCBPcmcxHDAaBgNVBAsME09wZW5zdGFjayBUZXN0
IFVuaXQxGzAZBgNVBAMMEioucG9uZy5leGFtcGxlLmNvbTEgMB4GCSqGSIb3DQEJ
ARYRYWRtaW5AZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQDUuzrEoAZUMSNdsHhavkVErqGJhhHYyqgzsE/z4UYehaMqnKTgwhQ0T5Hf
3GmlIBt4I96/3cxj0qSLrdR81fM+5Km8lIlVHwVn1y6LKcMlaUC4K+sgDLcjhZfb
f9+fMkcur3WlNzKpAEaIosWwsu6YvYc+W/nPBpKxMbOZ4fZiPMEo8Pxmw7sl/6hn
lBOJj7dpZOZpHhVPZgzYNVoyfKCZiwgdxH4JEYa+EQos87+2Nwhs7bCgrTLLppCU
vpobwZV5w4O0D6INpUfBmsr4IAuXeFWZa61vZYqhaVbAbTTlUzOLGh7Z2uz9gt75
iSR2J0e2xntVaUIYLIAUNOO2edk8NMAuIOGr2EIyC7i2O/BTti2YjGNO7SsEClxi
IFKjYahylHmNrS1Q/oMAcJppmhz+oOCmKOMmAZXYAH1A3gs/sWphJpgv/MWt6Ji2
4VpFaJ+o4bHILlqIpuvL4GLIOkmxVP639khaumgKtgNIUTKJ/V6t/J31WARfxKxl
BQTTzV/Be+84YJiiddx8eunU8AorPyAJFzsDPTJpFUB4Q5BwAeDGCySgxJpUqM2M
TETBycdiVToM4SWkRsOZgZxQ+AVfkkqDct2Bat2lg9epcIez8PrsohQjQbmiqUUL
2c3de4kLYzIWF8EN3P2Me/7b06jbn4c7Fly/AN6tJOG23BzhHQIDAQABMA0GCSqG
SIb3DQEBBQUAA4ICAQCfzAhdGe5UMaNX1zyJicBpQd1G+HNo7Ea5+vXf9tlYNdhT
lIi9NqYjngwNiWI1kUm2FPRDaTwC0kLxk5zBPzF7bcf0SwJCeDjmlUpY7YenS0DA
XmIbg8FvgOlp69Ikrqz98Y4pB9H4O81WdjxNBBbHjrufAXxZYnh5rXrVsXeSJ8jN
MYGWlSv4xwFGfRX53b8VwXFjGjAkH8SQGtRV2w9d0jF8OzFwBA4bKk4EplY0yBPR
2d7Y3RVrDnOVfV13F8CZxJ5fu+6QamUwIaTjpyqflE1L52KTy+vWPYR47H2u2bhD
IeZRufJ8adNIOtH32EcENkusQjLrb3cTXGW00TljhFXd22GqL5d740u+GEKHtWh+
9OKPTMZK8yK7d5EyS2agTVWmXU6HfpAKz9+AEOnVYErpnggNZjkmJ9kD185rGlSZ
Vvo429hXoUAHNbd+8zda3ufJnJf5q4ZEl8+hp8xsvraUy83XLroVZRsKceldmAM8
swt6n6w5gRKg4xTH7KFrd+KNptaoY3SsVrnJuaSOPenrUXbZzaI2Q35CId93+8NP
mXVIWdPO1msdZNiCYInRIGycK+oifUZPtAaJdErg8rt8NSpHzYKQ0jfjAGiVHBjK
s0J2TjoKB3jtlrw2DAmFWKeMGNp//1Rm6kfQCCXWftn+TA7XEJhcjyDBVciugA==
-----END CERTIFICATE-----
@@ -1,54 +0,0 @@
#Certificate:
# Data:
# Version: 3 (0x2)
# Serial Number: 11990626514780340979 (0xa66743493fdcc2f3)
# Signature Algorithm: sha1WithRSAEncryption
# Issuer: C=US, ST=CA, L=State1, O=Openstack Test Org, OU=Openstack Test Unit, CN=0.0.0.0
# Validity
# Not Before: Dec 10 15:31:22 2013 GMT
# Not After : Nov 16 15:31:22 2113 GMT
# Subject: C=US, ST=CA, L=State1, O=Openstack Test Org, OU=Openstack Test Unit, CN=0.0.0.0
# Subject Public Key Info:
# Public Key Algorithm: rsaEncryption
# Public-Key: (2048 bit)
# Modulus:
# 00:ca:6b:07:73:53:24:45:74:05:a5:2a:27:bd:3e:
# .
# .
# .
# Exponent: 65537 (0x10001)
# X509v3 extensions:
# X509v3 Key Usage:
# Key Encipherment, Data Encipherment
# X509v3 Extended Key Usage:
# TLS Web Server Authentication
# X509v3 Subject Alternative Name:
# DNS:foo.example.net, DNS:*.example.com
# Signature Algorithm: sha1WithRSAEncryption
# 7e:41:69:da:f4:3c:06:d6:83:c6:f2:db:df:37:f1:ac:fa:f5:
# .
# .
# .
-----BEGIN CERTIFICATE-----
MIIDxDCCAqygAwIBAgIJAKZnQ0k/3MLzMA0GCSqGSIb3DQEBBQUAMHgxCzAJBgNV
BAYTAlVTMQswCQYDVQQIEwJDQTEPMA0GA1UEBxMGU3RhdGUxMRswGQYDVQQKExJP
cGVuc3RhY2sgVGVzdCBPcmcxHDAaBgNVBAsTE09wZW5zdGFjayBUZXN0IFVuaXQx
EDAOBgNVBAMTBzAuMC4wLjAwIBcNMTMxMjEwMTUzMTIyWhgPMjExMzExMTYxNTMx
MjJaMHgxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEPMA0GA1UEBxMGU3RhdGUx
MRswGQYDVQQKExJPcGVuc3RhY2sgVGVzdCBPcmcxHDAaBgNVBAsTE09wZW5zdGFj
ayBUZXN0IFVuaXQxEDAOBgNVBAMTBzAuMC4wLjAwggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQDKawdzUyRFdAWlKie9Pn10j7frffN+z1gEMluK2CtDEwv9
kbD4uS/Kz4dujfTx03mdyNfiMVlOM+YJm/qeLLSdJyFyvZ9Y3WmJ+vT2RGlMMhLd
/wEnMRrTYLL39pwI6z+gyw+4D78Pyv/OXy02IA6WtVEefYSx1vmVngb3pL+iBzhO
8CZXNI6lqrFhh+Hr4iMkYMtY1vTnwezAL6p64E/ZAFNPYCEJlacESTLQ4VZYniHc
QTgnE1czlI1vxlIk1KDXAzUGeeopZecRih9qlTxtOpklqEciQEE+sHtPcvyvdRE9
Bdyx5rNSALLIcXs0ViJE1RPlw3fjdBoDIOygqvX1AgMBAAGjTzBNMAsGA1UdDwQE
AwIEMDATBgNVHSUEDDAKBggrBgEFBQcDATApBgNVHREEIjAggg9mb28uZXhhbXBs
ZS5uZXSCDSouZXhhbXBsZS5jb20wDQYJKoZIhvcNAQEFBQADggEBAH5Badr0PAbW
g8by29838az69Raul5IkpZQ5V3O1NaNNWxvmF1q8zFFqqGK5ktXJAwGiwnYEBb30
Zfrr+eFIEERzBthSJkWlP8NG+2ooMyg50femp+asAvW+KYYefJW8KaXTsznMsAFy
z1agcWVYVZ4H9PwunEYn/rM1krLEe4Cagsw5nmf8VqZg+hHtw930q8cRzgDsZdfA
jVK6dWdmzmLCUTL1GKCeNriDw1jIeFvNufC+Q3orH7xBx4VL+NV5ORWdNY/B8q1b
mFHdzbuZX6v39+2ww6aZqG2orfxUocc/5Ox6fXqenKPI3moeHS6Ktesq7sEQSJ6H
QZFsTuT/124=
-----END CERTIFICATE-----
+56
View File
@@ -0,0 +1,56 @@
#!/usr/bin/env bash
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# The script to generate the key file sand certificates files used in unit
# tests. These files are saved in glanceclient/tests/unit/var .
#
pushd $(dirname -- "$0")/../glanceclient/tests/unit/var
# Remove existing files
rm *.key *.csr *.crt *.srl
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt \
-subj "/C=AU/ST=State CA/L=CA/O=OpenStack CA Org/OU=OpenStack Test CA/CN=Openstack Test Certificate Authority/emailAddress=admin@ca.example.com/" \
-addext "keyUsage=critical,digitalSignature,keyCertSign"
openssl genrsa -out privatekey.key 4096
openssl req -new -key privatekey.key -out server.csr \
-subj "/C=AU/ST=State CA/L=State1/O=OpenStack Test Org/OU=OpenStack Test Unit/CN=test.example.com/" \
-addext "subjectAltName=IP:127.0.0.1"
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
-out certificate.crt -days 3650 -sha256 -copy_extensions copyall
openssl req -new -key privatekey.key -out expired-cert.csr \
-subj "/C=AU/ST=State CA/L=State1/O=OpenStack Test Org/OU=OpenStack Test Unit/CN=test.example.com/" \
-addext "subjectAltName=IP:127.0.0.1"
openssl x509 -req -in expired-cert.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
-out expired-cert.crt -days 0 -sha256 -copy_extensions copyall
touch badcert.crt
for f in badcert.crt ca.crt certificate.crt expired-cert.crt privatekey.key; do
if [ -f $f ]; then
sed -i '1i # DO NOT EDIT. This file is generated by tools/generate_test_certs.sh' $f
fi
done
# Remove unused files
rm *.csr
rm ca.key
rm ca.srl
popd