Skip to content

Latest commit

 

History

History
96 lines (69 loc) · 3.86 KB

README.md

File metadata and controls

96 lines (69 loc) · 3.86 KB

Nest Logo

A lightweight local HTTPS proxy library for Nest framework apps (Express or Fastify) 🔀

NPM Version Build Status Test Results Test Coverage GitHub License

Description

A lightweight local HTTPS proxy library for Nest framework apps, supporting both Express and Fastify HTTP adapters, designed for use with self-signed SSL certificates.

⚠ Disclaimer

This library is intended only for use in local development, testing, and troubleshooting with self-signed SSL certificates. It is not recommended to use this in any production context or public-facing environment.

Always follow best practices when managing SSL certificates for any public-facing or production environment.

Self-signed SSL Certificates

See the following gist for info on creating self-signed SSL certificate PEM files using openssl:

Installation

$ npm i nest-local-https-proxy

Implementation

  1. Load your certificate and private key files into an HTTPS options (SecureContextOptions) object.

    const certPath = './cert.pem';
    const keyPath = './key.pem';
    let httpsOptions: SecureContextOptions;
    // Confirm local certificate files exist
    if (fs.existsSync(certPath) && fs.existsSync(keyPath)) {
      httpsOptions = {
        cert: fs.readFileSync(certPath),
        key: fs.readFileSync(keyPath),
      };
    } else {
      console.log('Failed to initalize HTTPS certificates for local SSL proxy');
    }
  2. Instatiate the LocalHttpsProxy class.

    Provide your NestApplication instance, and the HTTPS options object.

    const httpsDevProxy = new LocalHttpsProxy(app, httpsOptions);
  3. (Optional) Subscribe to events on LocalHttpsProxy instance.

    httpsDevProxy.on('listening', (httpsPort) => {
      console.log(`HTTPS listening on ${httpsPort}`);
    });
    httpsDevProxy.on('error', (error) => {
      console.error(`HTTPS proxy error occurred: ${error.message}`);
    });
  4. Start the proxy

    httpsDevProxy.start(port);

Test

# unit tests
$ npm run test

# test coverage
$ npm run test:cov

License

The nest-local-https-proxy project is MIT licensed.