All Projects → daquinoaldo → Https Localhost

daquinoaldo / Https Localhost

Licence: agpl-3.0
HTTPS server running on localhost

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Https Localhost

Mkcert
A simple zero-config tool to make locally trusted development certificates with any names you'd like.
Stars: ✭ 33,022 (+26967.21%)
Mutual labels:  https, local-development, localhost, chrome, firefox
Awesome Meta And Manifest
⚡ Awesome collection of meta tags & manifest properties.
Stars: ✭ 499 (+309.02%)
Mutual labels:  chrome, firefox, pwa, progressive-web-app
Nginxconfig.io
⚙️ NGINX config generator on steroids 💉
Stars: ✭ 14,983 (+12181.15%)
Mutual labels:  hacktoberfest, http2, https, ssl
Ember Inspector
Adds an Ember tab to the browser's Developer Tools that allows you to inspect Ember objects in your application.
Stars: ✭ 936 (+667.21%)
Mutual labels:  hacktoberfest, chrome, firefox
Symfony Docker
A Docker-based installer and runtime for Symfony. Install: download and `docker-compose up`.
Stars: ✭ 732 (+500%)
Mutual labels:  hacktoberfest, http2, https
Demo Progressive Web App
🎉 A demo for progressive web application with features like offline, push notifications, background sync etc,
Stars: ✭ 798 (+554.1%)
Mutual labels:  chrome, pwa, progressive-web-app
Localdots
HTTPS domains for localhost. 🏠
Stars: ✭ 486 (+298.36%)
Mutual labels:  https, local-development, localhost
Nico
A HTTP2 web server for reverse proxy and single page application, automatically apply for ssl certificate, Zero-Configuration.
Stars: ✭ 43 (-64.75%)
Mutual labels:  http2, ssl, certificate
Shgf
Simple HTTP golang framework
Stars: ✭ 13 (-89.34%)
Mutual labels:  http2, https, ssl
React Most Wanted
React starter kit with "Most Wanted" application features
Stars: ✭ 1,867 (+1430.33%)
Mutual labels:  hacktoberfest, pwa, progressive-web-app
Acme client
Java ACME Client application
Stars: ✭ 77 (-36.89%)
Mutual labels:  https, ssl, certificate
Devcert
Local HTTPS development made easy
Stars: ✭ 655 (+436.89%)
Mutual labels:  https, ssl, local-development
Upup
✈️ Easily create sites that work offline as well as online
Stars: ✭ 4,777 (+3815.57%)
Mutual labels:  hacktoberfest, pwa, progressive-web-app
X0
Xzero HTTP Application Server
Stars: ✭ 111 (-9.02%)
Mutual labels:  http2, https, ssl
Bikedeboa
A (Progressive) Web App to find, map and review bike parkings in the cities of Brazil.
Stars: ✭ 54 (-55.74%)
Mutual labels:  hacktoberfest, pwa, progressive-web-app
Pric
Simple zero-config tool to create Private Certificate Authority & issue locally-trusted development server certificates with any domain names you'd like. SSL certificates for development purposes.
Stars: ✭ 87 (-28.69%)
Mutual labels:  https, ssl, localhost
Serve
Simple http server for localhost development with a flags for enabling gzip and http2
Stars: ✭ 93 (-23.77%)
Mutual labels:  http2, https, localhost
Preact Cli
😺 Your next Preact PWA starts in 30 seconds.
Stars: ✭ 4,510 (+3596.72%)
Mutual labels:  hacktoberfest, http2, pwa
Ansible Role Certbot
Ansible Role - Certbot (for Let's Encrypt)
Stars: ✭ 477 (+290.98%)
Mutual labels:  https, ssl, certificate
Mue
Fast, open and free-to-use new tab page for modern browsers
Stars: ✭ 56 (-54.1%)
Mutual labels:  hacktoberfest, chrome, firefox

HTTPS server running on localhost

I'm looking for maintainers and contributors! Learn more.

Run an express server on localhost with HTTP2 and SSL. Serve static files or import as module in your project.

https-localhost is a lightweight tool for serving static content on SSL thanks to locally-trusted development certificates.
It works with MacOS, Linux and Windows, on Chrome and Firefox, and requires you no configuration.

NPM

Test Coverage Status Dependency Status Known Vulnerabilities GitHub issues

Dependencies

nss/certutils are needed for Firefox and Chrome.

MacOS

brew install nss

Linux

sudo apt install libnss3-tools
    -or-
sudo yum install nss-tools
    -or-
sudo pacman -S nss

Install and use standalone

npm i -g --only=prod https-localhost
serve ~/myproj
  • sudo may be necessary.
  • If a static path is not provided the current directory content will be served.
  • You can change the port setting the PORT environmental variable: PORT=4433 serve ~/myproj. Specifying port number will also prevent http to https redirect.

Binaries

If you don't have Node.js installed just use a packaged version! Download it from the release page.

# Linux
./https-localhost-linux ~/myproj

# MacOS
./https-localhost-macos ~/myproj

# Windows
./https-localhost-win.exe C:\User\me\myproj

Tip 1: on Windows just drag the folder on the executable to serve it.
Tip 2: on all platform put the executable on the folder you want to serve and double-click it.

Use as module

Install as a dependency:

npm i -s https-localhost

Then put in your index.js file:

const app = require("https-localhost")()
// app is an express app, do what you usually do with express
app.listen(port)
  • If the port number is not provided, it will listen on 443.
  • To redirect the http traffic to https use app.redirect().
  • You can serve static files with app.serve(path).
  • You can create a certificate for additional domains with require("https-localhost")("mydomain.com")

Tip: consider installing it as a dev dependency: this is not a production tool!
npm i --save-dev https-localhost

Use with a web framework different from Express.js

const httpsLocalhost = require("https-localhost")()
// const app = ...
// const port = 443
const certs = await httpsLocalhost.getCerts()
const server = https.createServer(certs, app).listen(port)

Production

This tool has a production version that activates HTTP/2, compression and minify.

NODE_ENV=production serve ~/myproj

I decide to not activate it by default since it is usually an unwanted behaviour for localhost testing, but sometimes it could be userful, e.g. to test Progressive Web Application or more ingeneral the website performances.

IMPORTANT: the fact that there is a production enviornment doesn't mean that this tool is suitable for production. It's intended to be used only for local testing.

Why and how it works

Serving static content on localhost in a trusted SSL connection is not so simple.
It requires to manually generate and trust certificates, with complicate commands and many manual steps.

sserve, serves static content using a locally-trusted certificate, generated with the well-knowed mkcert tool.

When you install sserve it automatically creates and installs a local CA in the system (and browsers) root store, and generates the certificate for you.
No configuration is required, just lunch the tool and we take care of everything you need.

Supported root stores

The supported root stores are the one supported by mkcert.
Checkout the updated list here.

Here there is a handy copy:

  • macOS system store
  • Windows system store
  • Linux variants that provide either
    • update-ca-trust (Fedora, RHEL, CentOS) or
    • update-ca-certificates (Ubuntu, Debian) or
    • trust (Arch)
  • Firefox (macOS and Linux only)
  • Chrome and Chromium
  • Java (when JAVA_HOME is set)

Troubleshooting

Node.js version

https-localhost is compatible with the LTS and latest version of Node.js.
If you need compatibility with other Node.js versions let me know, we'll try to rearrange the code.

root required

  • At first run this tool generate a trusted certificate. The sudo password may be required. If you cannot provide the sudo password generate a localhost.key and localhost.crt and specify its path with CERT_PATH=/diractory/containing/certificates/ serve ~/myproj.
  • At each run the password may be required to run the server on port 443 and 80. To avoid the script ask for password specify a different port number: PORT=4433 serve ~/myproj.

EACCES

Run with sudo to use the default ports 443 and 80. You can also change port with: PORT=4433 serve ~/myproj.

EADDRINUSE

Another service on your machine is using port 443 or port 80. Stop it or change port with PORT=4433 serve ~/myproj.

Unable to run on Windows

Windows users with spaces or quotes in the name (like Aldo D'Aquino) may experience some problems in running the script. You can try to escape this chars or put the entire path between double quotes, but I suggest you to switch to a better user name (like aldodaquino).

RangeError

RangeError: Invalid typed array length: -4095

It is a known bug of spdy that is present sometimes with some old Node.js versions.

It should be present only with NODE_ENV=production, hence the easiest fix is to avoid using the production env. Anyway, if you need the production env, you can try to update Node.js to the latest release, or to the most stable LTS version.

I've tried to reproduce this error without any success (checkout the Travis build logs). If you can help please open an issue and describe as better as you can how to reproduce it, I'll be happy to help you.

ERR_SSL_PROTOCOL_ERROR

And in general all the cases when the script runs but the connection is marked as untrusted.

Force a reinstall of the certificate with REINSTALL=true serve. sudo may be required on linux and MacOS.

If the problem is solved you should be able to use https-localhost also as module.

Contributing

Each contribute is welcome!
Please, checkout the contributing guidelines.

License

Is released under AGPL-3.0 - GNU Affero General Public License v3.0.

Briefly:

  • modification and redistribution allowed for both private and commercial use
  • you must grant patent rigth to the owner and to all the contributors
  • you must keep it open source and distribute under the same license
  • changes must be documented
  • include a limitation of liability and it does not provide any warranty

Warranty

THIS TOOL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. For the full warranty check the LICENSE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].