SSL & SECURITY
Jun 24, 2026

How to Install a Free Let's Encrypt SSL Certificate

9 min read
Author
CloudStick Team
Server Infrastructure
Share this article
How to Install a Free Let's Encrypt SSL Certificate
CloudStick
Free SSL in minutes

What is Let's Encrypt?

Let's Encrypt is a free, automated, open Certificate Authority run by the non-profit Internet Security Research Group (ISRG). It issues Domain Validation (DV) SSL/TLS certificates at no cost, with a 90-day validity period and automated renewal support. Since its launch in 2016 it has issued over 3 billion certificates and is trusted by every major browser and operating system.

The certificate it issues encrypts traffic between the browser and your server, enables the padlock icon in the address bar, and is required for HTTP/2. For the vast majority of websites — personal blogs, agency client sites, SaaS apps, WooCommerce stores — a free Let's Encrypt DV certificate is exactly what you need. The only cases where you'd pay for a certificate are Extended Validation (EV, for financial institutions showing the company name in green) or Organization Validation (OV, for enterprise compliance requirements). For everything else, Let's Encrypt is the correct choice.

Before You Start

Three things must be in place before Certbot can issue a certificate. First, your domain DNS must point to your server's public IP address — Let's Encrypt uses an HTTP-01 challenge that makes a request to your domain over port 80 to verify ownership. Second, port 80 must be open on your firewall. Third, you need root or sudo access to the server. Check all three before proceeding:

# Check your server IP
curl ifconfig.me
# Verify domain resolves to your server
dig +short yourdomain.com
# Confirm port 80 is open (run from a different machine)
nc -zv yourdomain.com 80
PREREQUISITE

You need Ubuntu 20.04 or 22.04, root access, and a domain with its A record pointing to your server IP. If the DNS hasn't propagated yet (allow up to 24 hours), the challenge will fail. Verify with dig +short yourdomain.com before running Certbot.

Install Certbot

Certbot is the official Let's Encrypt client maintained by EFF. It handles the ACME protocol challenge, certificate issuance, and renewal. On Ubuntu 22.04 install it via snap for the most up-to-date version:

# Remove any old certbot apt package first
sudo apt remove certbot
# Install via snap (recommended)
sudo snap install --classic certbot
# Create the symlink
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# Verify installation
certbot --version
# certbot 2.x.x

Certbot has plugins for both Nginx and Apache that can automatically configure the server block — but if you're running a custom stack or managing configs manually, the --webroot or --standalone methods give you direct control over where the certificate files land.

Issue a Certificate

Use the certonly --webroot method when you want Certbot to write a verification file into your site's webroot without touching your Nginx or Apache config. This is the safest method for servers managed by CloudStick or other control panels, since it leaves your existing server config untouched.

# Issue certificate using webroot method
sudo certbot certonly --webroot \
-w /home/cpuser/apps/yourdomain.com \
-d yourdomain.com -d www.yourdomain.com \
--email admin@yourdomain.com \
--agree-tos --no-eff-email
# Alternatively, Nginx plugin (modifies nginx.conf automatically)
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

On success, Certbot stores the certificate files under /etc/letsencrypt/live/yourdomain.com/. The four files you care about are:

/etc/letsencrypt/live/yourdomain.com/
├── cert.pem # Your domain certificate
├── chain.pem # Intermediate CA certificate
├── fullchain.pem # cert.pem + chain.pem (use this in nginx)
└── privkey.pem # Private key (never share this)

In your Nginx server block, reference fullchain.pem for ssl_certificate and privkey.pem for ssl_certificate_key. Then reload Nginx: sudo nginx -t && sudo systemctl reload nginx.

Verify Your SSL Is Working

After reloading your web server, verify the certificate is served correctly from the command line and cross-check with an online tool:

# Check certificate details from the command line
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com \
</dev/null 2>/dev/null | openssl x509 -noout -dates -subject
# Expected output:
notBefore=Jun 24 00:00:00 2026 GMT
notAfter=Sep 22 00:00:00 2026 GMT
subject=CN=yourdomain.com
# Also test with curl
curl -I https://yourdomain.com
# Should return HTTP/2 200 (or 301 redirect to www)
TIP

Run your domain through SSL Labs (ssllabs.com/ssltest) for a full grade. A properly configured Let's Encrypt setup with TLS 1.2 + 1.3 and a strong cipher suite will score A or A+. If you score lower, the likely culprits are old TLS 1.0/1.1 being enabled or weak Diffie-Hellman parameters.

SSL with CloudStick: Zero Commands Required

If you run your servers with CloudStick, you never need to touch Certbot at all. CloudStick issues and configures a Let's Encrypt certificate automatically when you create a new website — just point your domain's DNS to the server and click Enable SSL from the website panel. CloudStick handles the ACME challenge, writes the certificate to /home/<user>/ssl/<site>/, updates the Nginx vhost, and sets up a renewal cron. It also handles wildcard certificates and HSTS configuration from the same panel.

For servers you're managing manually, Certbot's 90-day certificates require a renewal cron job. The snap installation sets one up automatically at /etc/cron.d/certbot and runs twice daily. Test it with sudo certbot renew --dry-run to confirm it works before you forget about it. An expired certificate takes your site down hard — browser warnings appear instantly and organic traffic drops within hours. Set up renewal and test it the same day you issue the cert.

Leave a comment
Full Name
Email Address
Message
Contents

We use cookies to improve your experience

CloudStick uses cookies to personalise content, analyse traffic and keep you signed in. Cookie Policy · Terms of Service

Manage cookies