Thus wrote Fabiano Sidler: > What's the reason for this? Please find attached my TLSServer.
Oh, sorry...! Apparently, the attachment has been stripped. Here inline: === tlsserver.py === from socketserver import ThreadingTCPServer,StreamRequestHandler import ssl class TLSServer(ThreadingTCPServer): def __init__(self, *args, **kwargs): super(TLSServer, self).__init__(*args, **kwargs) ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) ctx.set_servername_callback(self.servername_callback) ctx.check_hostname = False self._ctx = ctx def get_request(self): s,a = super(TLSServer, self).get_request() s = self._ctx.wrap_socket(s, server_side=True) return s,a def servername_callback(self, sock, req_hostname, cb_context): return ssl.ALERT_DESCRIPTION_INTERNAL_ERROR from OpenSSL import crypto as x509 from tempfile import NamedTemporaryFile class SelfSigningServer(TLSServer): def servername_callback(self, sock, req_hostname, cb_context): key = x509.PKey() key.generate_key(x509.TYPE_RSA, 2048) cert = x509.X509() subj = cert.get_subject() subj.C = 'CH' subj.ST = 'ZH' subj.L = 'Zurich' subj.O = 'ACME Inc.' subj.OU = 'IT dept.' subj.CN = req_hostname cert.set_version(0x02) cert.set_serial_number(1000) cert.gmtime_adj_notBefore(0) cert.gmtime_adj_notAfter(10*365*24*60*60) cert.set_issuer(subj) cert.set_pubkey(key) cert.sign(key, 'sha256') certfile = NamedTemporaryFile() keyfile = NamedTemporaryFile() certfile.write(x509.dump_certificate(x509.FILETYPE_PEM, cert)) keyfile.write(x509.dump_privatekey(x509.FILETYPE_PEM, key)) certfile.seek(0) keyfile.seek(0) cb_context.load_cert_chain(certfile=certfile.name, keyfile=keyfile.name) cb_context.set_servername_callback(self.servername_callback) sock.context = cb_context certfile.close() keyfile.close() class SelfSigningHandler(StreamRequestHandler): def handle(self): self.wfile.write(b'Hello World!\r\n') server = SelfSigningServer(('localhost',1234), SelfSigningHandler) server.serve_forever() === tlsserver.py === Thanks again! -- https://mail.python.org/mailman/listinfo/python-list