Encrypting on the Wild Side

Charly's Column – Wildcards

Article from Issue 214/2018

The pleasure of owning a nice domain like sensorenresidenz.de is clouded by the requirement of an X.509 certificate for every subdomain that the admin wants or has. Columnist Charly can help boost the webmaster's spirits.

Certificates from Let's Encrypt [1] are free and popular – supposedly half of all digital certificates used on the web originate there. However, anyone running web servers with many subdomains has had the displeasure of having to manage a bag full of certificates. A single wildcard certificate from one of the usual certification bodies solves the problem in principle, but it is expensive.

This changed in March 2018: All those who have access to their domain name's DNS server can now also obtain wildcard certificates from Let's Encrypt.

If you have not yet installed the Let's Encrypt client, you can load it as follows:

git clone https://github.com/letsencrypt/letsencrypt

After that, web admins usually have to add some Python packages. That's easily taken care of with

letsencrypt/letsencrypt-auto --help

which will ask you for your sudo password when launched. Let's Encrypt uses a DNS-based challenge-response method for authentication.

Let's Dance

The following command lets me request a certificate for the namespace *.sensorenresidenz.de (just don't ask why I registered the domain):

sudo /usr/local/letsencrypt/letsencrypt-auto certonly --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory --email charly@kuehnast.com --domains *.sensorenresidenz.de

After a second of recollection, the Let's Encrypt client answers. It wants me to create a TXT record named _acme-challenge.sensorenresidenz.de in the DNS with a given random string as content:

Please deploy a DNS TXT record under the name _acme-challenge.sensorenresidenz.de with the following value:
Before continuing, verify the record is deployed.

After I have created the entry and checked that it is available, I press Enter. Let's Encrypt retrieves my request and verifies it. Then it creates a certificate (fullchain.pem ) and key (privkey.pem) and stores both under /etc/letsencrypt/live/Name – applause (Listing 1).

Listing 1

I did it!

Congratulations! Your certificate and chain have been saved at:
  Your key file has been saved at:
  Your cert will expire on 2018-08-07. To obtain a new or tweaked version of this certificate in the future, simply run letsencrypt-auto again. To non-interactively renew *all* of your certificates, run "letsencrypt-auto renew".

Integrating the certificate with the web server follows the usual steps. The browser is happy with the certificate that my servers now deliver (Figure 1).

Figure 1: Browsers – here Firefox – accept wildcard certificates from Let's Encrypt without any restrictions.

Wildcard certificates from Let's Encrypt expire after 90 days like all other certificates from the issuer. To renew them, you simply call letsencrypt-auto renew.


  1. Let's Encrypt: https://letsencrypt.org

The Author

Charly Kühnast manages Unix systems in the data center in the Lower Rhine region of Germany. His responsibilities include ensuring the security and availability of firewalls and the DMZ.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Charly's Column – Let's Encrypt

    Columnist Charly fights the fight for free SSL certificates with Let's Encrypt. He particularly likes the matching software client that takes care of everything – from certificate retrieval to web server integration.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More