Python Bottle mit SSL (https)

14.01.2025 - Lesezeit: ~1 Minute

Änderung gegen über der Original-Quelle (Deprecated since version 3.6: OpenSSL has deprecated all version specific protocols.)

PROTOCOL_TLSv1_2 wird zu PROTOCOL_TLS_SERVER

  • test_bottle_https_ssl.py
from bottle import ServerAdapter,run,get

class SecureAdapter(ServerAdapter):
    def run(self, handler):
        from wsgiref.simple_server import make_server, WSGIRequestHandler, WSGIServer
        from socketserver import ThreadingMixIn
        import ssl

        if self.quiet:
            class QuietHandler(WSGIRequestHandler):
                def log_request(*args, **kw):
                    pass

            self.options['handler_class'] = QuietHandler

        #Setup SSL context for 'A+' rating from Qualys SSL Labs.
        context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS_SERVER)
        context.load_cert_chain(certfile='server.pem')
        context.set_ciphers('EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH')

        class ThreadAdapter(ThreadingMixIn, WSGIServer): pass
        ssl_server = make_server(self.host, self.port, handler, server_class=ThreadAdapter, **self.options)
        ssl_server.socket = context.wrap_socket(ssl_server.socket, server_side=True)
        ssl_server.serve_forever()

@get("/x")
def get_x():
 return "Hi there"

run(server=SecureAdapter, host="0.0.0.0", port=8090)
Tags: