How to create locally signed SSL certificates with mkcert - TechRepublic

How to create locally signed SSL certificates with mkcert

If you need to generate quick SSL certificates for test servers and services, mkcert might be the fastest option available. Jack Wallen shows you how to use this handy tool.

Écrit par
Jack Wallen
Jack Wallen
Aug 26, 2021
We may earn from vendors via affiliate links or sponsorships. This might affect product placement on our site, but not the content of our reviews. See our Terms of Use for details.

Must-read security coverage

When you deploy websites and services, you almost always depend on SSL certificates to add a layer of assurance to those who connect to those deployments. For anything in production, you’ll be purchasing your SSL certificates from a certificate authority, otherwise, you’re not really giving those users much assurance.

However, for testing purposes, there’s no reason to purchase those certificates from an authority (at least not until you’re ready to move to production). For those instances, I like to generate locally signed certificates.

There are a few tools available for Linux to create self-signed certificates, one of which is mkcert.

SEE: Security incident response policy (TechRepublic Premium)

I want to walk you through the process of creating a locally signed certificate with mkcert. I’ll be demonstrating on Ubuntu Server 20.04.

What you’ll need

In order to re-create what I’m about to do, you’ll need a running instance of Ubuntu Server and a user with sudo privileges. That’s it. Let’s get to work.

How to install mkcert

The first thing to do is install mkcert. Before you do that, you need to install a couple of dependencies with the command:

sudo apt-get install wget libnss3-tools -y

Next, download the necessary mkcert file with:

wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64

Move and rename the file into /usr/bin with:

sudo mv mkcert-v1.4.3-linux-amd64 /usr/bin/mkcert

Give the file executable permissions with the command:

sudo chmod +x /usr/bin/mkcert

Verify the installation with:

mkcert --version

You should see the release number printed out in the terminal.

Advertisement

How to generate your first SSL

We can now generate our first local CA certificate with the command:

mkcert -install

The above command will generate your new certification, without you needing to input a single bit of information. The certificate will be saved into the local store, which you can locate with the command:

mkcert -CAROOT

You should see something like:

/home/jack/.local/share/mkcert

Next, we’ll generate a certificate for a test website we’ll call trtest at IP address 192.168.1.111 with the command:

mkcert trtest localhost 192.168.1.111 ::1

The output of the above command should include:

Created a new certificate valid for the following names 📜
- "trtest"
- "localhost"
- "192.168.1.111"
- "::1"

The output will also include the location of the newly created pem file as in:

The certificate is at "./trtest+3.pem" and the key at "./trtest+3-key.pem"

You can then copy that pem file to a directory to be used by your test web server and then configure it to be used. For example, you might move the trtest+3-key.pem file to the /var/www/html/certs/ directory. You’d then configure your web server to use that certificate. For example, with NGINX that configuration line might look like:

ssl_certificate /var/www/html/certs/trtest+3.pem;
ssl_certificate_key /var/www/html/certs/trtest+3-key.pem;

And that’s all there is to generating a locally signed SSL certificate with the mkcert tool. If you need to create those certificates on the fly, mkcert is one of the easiest tools for the task.


Image: GettyImages/Yuichiro Chino
Jack Wallen

Jack Wallen is an award-winning writer for TechRepublic, The New Stack, and Linux New Media. He's covered a variety of topics for over twenty years and is an avid promoter of open source. For more news about Jack Wallen, visit his website jackwallen.com.