def test_ssl(self): 'Test serving over SSL' address = '127.0.0.1' with TemporaryDirectory('srv-test-ssl') as tdir: cert_file, key_file, ca_file = map(lambda x: os.path.join(tdir, x), 'cka') create_server_cert(address, ca_file, cert_file, key_file, key_size=1024) ctx = ssl.create_default_context(cafile=ca_file) with TestServer(lambda data: (data.path[0] + data.read().decode('utf-8')), ssl_certfile=cert_file, ssl_keyfile=key_file, listen_on=address, port=0) as server: conn = http_client.HTTPSConnection(address, server.address[1], context=ctx) conn.request('GET', '/test', 'body') r = conn.getresponse() self.ae(r.status, http_client.OK) self.ae(r.read(), b'testbody') cert = conn.sock.getpeercert() subject = dict(x[0] for x in cert['subject']) self.ae(subject['commonName'], address)
def conn_factory(hostport, **kw): kw['context'] = self.ssl_context return http_client.HTTPSConnection(hostport, **kw)