uNetworking / uNetworking/uWebSockets.js

Runtime SSL certificate hot reload without restart

Open
#1,289 6 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

FAQ question
Dominant language
C++
Stars
9.2k
Forks
625
Avg merge
6h 7m
Merged PRs (30d)
13

Description

Feature Request

Currently, SSLApp only accepts key_file_name and cert_file_name during initialization. Once the certificate expires (e.g., Let's Encrypt 90-day certs), the entire Node.js process must be restarted to load the new certificate.

Use Case

  • Using Let's Encrypt with automatic renewal
  • Running WebSocket servers with long-lived connections
  • Need zero-downtime certificate rotation
  • Production environments where process restart is costly

Proposed API

const app = uWS.SSLApp({
  key_file_name: '/path/to/key.pem',
  cert_file_name: '/path/to/cert.pem'
});

// After certbot renews the certificate:
app.updateSSL({
  key_file_name: '/path/to/key.pem',
  cert_file_name: '/path/to/cert.pem'
});

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how SSLApp consumes key_file_name and cert_file_name during initialization, then identify the runtime SSL state that would need to change. Define and validate the proposed updateSSL API, including certificate rotation for long-lived WebSocket servers, and verify that renewed certificates load without restarting the Node.js process.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, node.js
Domain
api, backend, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.