Skip to main content

Local HTTPS

Gatsby provides an easy way to use a local HTTPS server during development, thanks to devcert. When you enable the https option, a private key and certificate file will be created for your project and used by the development server.

Usage (Automatic HTTPS)

Start the development server using npm run develop as usual, and add either the -S or --https flag.

$ npm run develop -- --https

Setup

When setting up a development SSL certificate for the first time, you may be asked to type in your password after starting the development environment:

info setting up SSL certificate (may require sudo)

Password:

This is only required the first time you are using Gatsby’s HTTPS feature on your machine. After that, certificates will be created on the fly.

After typing in your password, devcert will attempt to install some software necessary to tell Firefox (and Chrome, only on Linux) to trust your development certificates.

Unable to automatically install SSL certificate - please follow the
prompts at http://localhost:52175 in Firefox to trust the root certificate
See https://github.com/davewasmer/devcert#how-it-works for more details
-- Press <Enter> once you finish the Firefox prompts --

If you wish to support Firefox (or Chrome on Linux), visit localhost:52175 in Firefox and follow the point-and-click wizard. Otherwise, you may press enter without following the prompts. Reminder: you’ll only need to do this once per machine.

Now open the development server at https://localhost:8000 and enjoy the HTTPS goodness ✨. Of course, you may change the port according to your setup.

Find out more about how devcert works.

Custom Key and Certificate Files

You may find that you need a custom key and certificate file for https if you use multiple machines for development (or if your dev environment is containerized in Docker).

If you need to use a custom https setup, you can pass the --https, --key-file and --cert-file flags to npm run develop.

  • --cert-file [relative path to ssl certificate file]
  • --key-file [relative path to ssl key file]

See the example command:

$ gatsby develop --https --key-file ../relative/path/to/key.key --cert-file ../relative/path/to/cert.crt

in most cases, the --https passed by itself is easier and more convenient to get local https.


Keep in mind that the automatic certificates issued with the --https flag are explicitly issued to localhost and will only be accepted there. Using it together with the --host option will likely result in browser warnings.


Edit this page on GitHub
Docs
Tutorials
Plugins
Blog
Showcase