CherryPy SSL Built-in Adapter Causing Port Contention with Netcat

13 views Asked by At

I'm encountering an issue with CherryPy's built-in SSL adapter where it seems to cause port contention with netcat. When I run a CherryPy server with SSL enabled using the built-in adapter, and establish a TCP connection using netcat nc localhost 8080 without performing TLS handshake, not able to access the application via browser or any other client until I complete the TLS handshake in netcat. However, if I switch to using PyOpenSSL, able to access the application via other clients while TLS handshake is not yet done in TCP connection via netcat.

Here's a summary of the setup and behavior:

  • I have a CherryPy application configured to use SSL with the built-in adapter.
class YourApp:
    @cherrypy.expose
    def index(self):
        return "Hello, world!"


if __name__ == '__main__':
    # Configuration
    cherrypy.config.update({
        'server.thread_pool': 10,  # Number of threads in the pool
        'server.socket_host': '0.0.0.0',  # Bind to all interfaces
        'server.socket_port': 8080,  # Port to listen on
        'server.socket_timeout': 60
    })

    cherrypy.server.ssl_module = 'builtin'  # Use the built-in SSL module
    cherrypy.server.ssl_certificate = 'cert.pem'  # Path to your SSL certificate
    cherrypy.server.ssl_private_key = 'key.pem'

    cherrypy.quickstart(YourApp(), '/')
  • When I start the CherryPy server, it binds to the specified port with SSL enabled.
  • Access the URL https://localhost:8080/ in browser, returns "Hello, world!"
  • Execute nc localhost 8080 in a terminal
  • Access the URL https://localhost:8080/ again in browser, it hangs.
  • Terminate ctrl+c the nc command in terminal, "Hello, world!" is returned in the browser.
  • But if change to cherrypy.server.ssl_module = 'pyopenssl', with TCP connection established using nc, able to access the URL in the browser and other clients.

I'm not sure why the built-in SSL adapter is causing this behavior, but it seems to be related to how it manages SSL connections or handles socket bindings.

Has anyone encountered a similar issue with CherryPy's built-in SSL adapter? Any insights or suggestions on how to resolve or further debug this issue would be greatly appreciated.

Thank you!

0

There are 0 answers