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 8080in a terminal - Access the URL
https://localhost:8080/again in browser, it hangs. - Terminate
ctrl+cthe nc command in terminal, "Hello, world!" is returned in the browser. - But if change to
cherrypy.server.ssl_module = 'pyopenssl', with TCP connection established usingnc, 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!