Hello? Rfd, anyone?
Thus wrote Fabiano Sidler: > 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 -- https://mail.python.org/mailman/listinfo/python-list