What comes first - Certbot or nginx?

Abstract: Resolves Certbot ACME HTTP-01 challenge failures by ensuring nginx is installed and listening on port 80 before certificate issuance.

Created: 2026-09-15 by
You should install and configure nginx before running Certbot. Nginx must be listening on port 80 to handle the ACME HTTP-01 challenge that Certbot uses to prove domain ownership. If nginx is not already active, the certificate issuance process will fail because the validation server cannot reach your web root.

Understanding the Roles of Each Tool

To understand why the order matters, it helps to look at what each piece of software actually does during an SSL setup. Nginx is a high-performance HTTP server and reverse proxy. Its primary job in this context is to serve files from your disk and forward requests to backend applications. It also handles the TLS termination, meaning it decrypts incoming HTTPS traffic so your application can process plain HTTP. Certbot, on the other hand, is a client for the Let's Encrypt Certificate Authority. It automates the process of obtaining and renewing SSL/TLS certificates. When you run certbot certonly --nginx, it temporarily modifies your nginx configuration to redirect specific URLs to a hidden directory. This allows Let's Encrypt to verify that you control the domain. Once verification succeeds, Certbot retrieves the certificate files and updates your nginx configuration again to use them for encrypted connections. If you attempt to run Certbot before nginx is installed or configured, the tool has no way to communicate with the ACME server via the HTTP protocol. The validation fails immediately, leaving you without a certificate. Therefore, the infrastructure must exist before the automation tool can interact with it.

Prerequisites Before Installation

Before installing either tool, ensure you have a non-root user with sudo privileges and a domain name pointing to your server's IP address. You need a basic firewall configuration that allows traffic on ports 80 (HTTP) and 443 (HTTPS). While we are setting up nginx first, you only need port 80 open initially. Port 443 can remain closed until after the certificate is successfully obtained and configured.

Step-by-Step Installation Order

Follow these steps strictly to avoid common pitfalls during the SSL setup process.
  1. Install Nginx: Use your system package manager to install nginx. For example, on Ubuntu or Debian, run sudo apt update followed by sudo apt install nginx. On CentOS or RHEL, use yum install nginx.
  2. Start and Enable Nginx: Ensure the service is running and starts automatically on boot. Run sudo systemctl start nginx and sudo systemctl enable nginx.
  3. Create a Basic Server Block: Create a simple configuration file in /etc/nginx/sites-available/. Define a server block that listens on port 80 and sets a root directory for your website. You do not need to configure SSL yet.
  4. Test the Configuration: Always test your nginx syntax before reloading. Run sudo nginx -t. If the test passes, reload the service with sudo systemctl reload nginx.
  5. Verify HTTP Access: Open a browser and navigate to http://yourdomain.com. You should see the default nginx welcome page or your content. This confirms that nginx is serving files correctly.
  6. Install Certbot: Now that nginx is ready, install the certbot package. On many systems, you can install it via apt install certbot or by using the Snap package manager if available.
  7. Run Certbot: Execute sudo certbot --nginx -d yourdomain.com. Certbot will detect the existing nginx installation, modify the config to allow the challenge, obtain the certificate, and then reconfigure nginx for HTTPS.

Common Pitfalls and Troubleshooting

Many users encounter issues when they try to force HTTPS too early. If you configure nginx to listen only on port 443 before having a valid certificate, the server may refuse connections or return errors. Certbot needs the ability to write to the nginx configuration files. Ensure your user has the necessary permissions or run commands with sudo. Another frequent error occurs if the domain DNS records are not propagated. Let's Encrypt servers must be able to resolve your domain name to your public IP address. If you recently changed DNS settings, wait for propagation before running Certbot. You can check this using tools like dig or online DNS checkers. Firewall rules are another critical component. If you are using ufw or firewalld, ensure that port 80 is explicitly allowed. A blocked port 80 prevents the ACME challenge from completing, causing Certbot to abort the process. After successful certificate installation, you can safely restrict access to port 80 if you wish to enforce HTTPS, but leave it open during the initial setup. For more details on handling connection errors during this phase, you might find our guide on Client Fails TLS Handshake: Troubleshooting Guide helpful. It covers various scenarios where network configurations interfere with secure connections.

Post-Installation Verification

Once Certbot finishes, verify that everything is working correctly. Check the nginx configuration again with sudo nginx -t to ensure no syntax errors were introduced. Reload the service to apply changes. Visit your site using https:// and look for the padlock icon in your browser. You can also use online SSL testing tools to verify the certificate chain and expiration date. Remember that Let's Encrypt certificates expire every ninety days. Certbot includes a renewal mechanism that runs automatically via cron or systemd timers. Test this renewal process periodically with sudo certbot renew --dry-run to ensure your site remains secure without manual intervention.

Frequently Asked Questions

Can I use Certbot without nginx?

Yes, Certbot supports multiple web servers including Apache, HAProxy, and standalone mode. However, if you are using nginx, the --nginx plugin simplifies the configuration process significantly by handling the edits automatically.

What happens if the DNS is not propagated?

Let's Encrypt will fail to validate your domain because it cannot reach your server over port 80. You must wait for DNS propagation to complete before attempting to obtain a certificate.

Do I need to restart nginx after Certbot runs?

Certbot typically reloads nginx automatically after modifying the configuration files. However, if you encounter issues, manually running sudo systemctl reload nginx ensures the new settings are applied.

Why does my site show a security warning after setup?

This often happens if the certificate is not correctly linked in the nginx configuration or if there is a mismatch between the domain name and the certificate. Verify that the ssl_certificate and ssl_certificate_key paths point to the correct files.

Is it safe to keep port 80 open permanently?

While keeping port 80 open allows for automatic redirection to HTTPS, you can close it if you only want to serve HTTPS traffic. However, closing it prevents future automated renewals unless you use a different validation method like DNS-01.

Latest News

How to Display Output of xterm Command in Terminal Screen using Cron

Resolve the inability to display xterm output in a terminal screen from cron by redirecting logs or using wall instead of insecure X11 workarounds.

Read More
Expose Local Server on VPS Preserving Real Client IPs (OS Level)

Resolve VPS logging showing only gateway IPs by configuring reverse proxies to forward real client addresses via X-Forwarded-For headers.

Read More
How to Clear Recent Files History in Linux without Deleting Actual Files?

Clear recent files history in Linux by deleting ~/.local/share/recently-used.xbel without removing the actual files.

Read More
Best HDD Copy Strategy: Manually Syncing and Rewriting Scratch

Resolve data drift between two 4TB hard drives by using rsync with the --delete flag to manually sync and rewrite scratch data for an exact mirror.

Read More
Understanding Bash Prompt Abbreviations: An Overview

Resolve repetitive typing errors by creating and persisting Bash aliases in the .bashrc file for improved command-line efficiency.

Read More
Free Tools and Methods to Log Real-Time Performance Details in Task Manager

Log real-time CPU and memory metrics to CSV files using Windows Performance Monitor Data Collector Sets to troubleshoot system slowness.

Read More
Contact Qatar Airways Customer Service: Phone Number, Help Center, and More

Resolve urgent Qatar Airways reservation issues like flight changes and baggage claims using the US phone number +1801-855-5905 or online self-service tools.

Read More
Windows 11: Alt Codes Displaying Wrong Characters - Solutions

Resolve Windows 11 Alt codes showing wrong characters by verifying the US keyboard layout and enabling Num Lock.

Read More
Run Programs with Elevated Privileges: A Comprehensive Guide

Eliminates the need to type sudo for frequent administrative tasks by configuring .bashrc aliases or functions.

Read More
Dynamically Changing Dates in Excel Formulas Using Cells

Eliminate manual date updates in Excel by using cell references to create dynamic formulas that automatically adjust calculations when input dates change.

Read More
Granting Edit Access to a Specific Excel Sheet in an Office 365 User Email ID-Based Login

Excel Online lacks native sheet-level permissions, so users must split workbooks or use worksheet protection to isolate edit access for specific tabs.

Read More
Creating Network Load on Local Wi-Fi from One PC

Generate sustained Wi-Fi bandwidth load from a single PC using a VM SFTP server to test router stability and throughput.

Read More
Changing the Default Editor for Batch Files in Windows 11's File Explorer

Resolve the issue of batch files opening in Notepad by changing the default editor to a preferred application like VS Code.

Read More
Gain WiFi Connection Minutes Before Losing it by Changing MAC Address

Bypass MAC address filtering to restore WiFi connectivity temporarily when a device is blocked by network administrators.

Read More
Photos Folders Turned Black: Troubleshooting Picture Applications on Windows

Resolve black screens in Windows Photos by resetting the app, updating graphics drivers, and repairing system files.

Read More
Troubleshooting High CPU Temperature Values: A Step-by-Step Guide

Resolve high CPU temperatures and thermal throttling by monitoring with Speedfan, cleaning dust from cooling components, and replacing degraded thermal paste.

Read More
Make cURL establish TLS connection with CA unknown

Resolve cURL TLS connection failures with unknown or self-signed certificates by using the --insecure flag to bypass CA validation.

Read More
Troubleshooting Incorrect Network Metrics Values in Grafana, Prometheus, InfluxDB, and Telegraf

Fix incorrect network metrics in Grafana, Prometheus, InfluxDB, and Telegraf by verifying interface selection, resolving unit mismatches, and handling counter resets.

Read More
Start Another Terminal Window (cmd.exe) Windows Repair/Troubleshoot

Provides step-by-step instructions to access the Windows Command Prompt via bootable media for advanced system repair and troubleshooting.

Read More
Thinkpad P1 Gen 6: Sudden Thunderbolt 3 Dock USB-C Charging Stopped Working

Resolve sudden Thunderbolt 3 dock USB-C charging and internet failure on ThinkPad P1 Gen 6 by updating firmware, resetting the dock, and adjusting power settings.

Read More
ASUS Windows 11 Laptop: Internet Connection Issue with Hotspot

Resolve ASUS Windows 11 laptop spinning wheel issue when connecting to mobile hotspot by resetting network stack, disabling IPv6, and adjusting power settings.

Read More
Developing iOS Project with Firebase: Logging in and Sending Push Notifications

Integrates Firebase to enable secure user authentication and push notifications in iOS applications.

Read More
Troubleshooting Bash Script with Suspected Issues of Spaces, Dashes, Filenames and Quoting

Resolve Bash script failures caused by word splitting, globbing, and special characters in filenames by applying proper quoting techniques.

Read More
Populating OneDrive Folder for Local Backup without Affecting Remote Files

Prevent OneDrive from deleting remote files during Windows reinstallation by unlinking the account or using symbolic links to isolate local data.

Read More
Force First Frame as Keyframe Without Re-encoding: A Quick Solution

Resolve inaccurate seeking and playback glitches by re-encoding video to ensure the first frame is a valid keyframe.

Read More
Find Information in Database Using WSL (Ubuntu) on Windows-10

Resolve database connection issues from WSL Ubuntu on Windows 10 by configuring client tools and network access to query remote or local servers.

Read More
Configuring a New Router with Different Networks: One Family, One Guest

Resolve IP conflicts and isolate guest traffic by configuring a second router with a distinct subnet via its WAN port.

Read More
Quickly Open Multiple Stock Websites with a Single Command

Solve the problem of manually opening multiple stock research websites by creating a single command to launch them simultaneously on Windows, macOS, or Linux.

Read More
Improved Adobe Acrobat Search Experience: Access Advanced Search with Ease

Access advanced search filters like case sensitivity and regex in Adobe Acrobat by clicking More Options in the Find bar.

Read More
Port Forwarding VM via OpenVPN: A Comprehensive Guide

Configure OpenVPN server and iptables to forward specific ports from VPN clients to a virtual machine's internal IP address.

Read More
Understanding Partitions in the 1980s: A Look Back at MS-DOS and Master Boot Record

Explains how the Master Boot Record and partition table enabled MS-DOS to manage multiple disk volumes on a single physical drive.

Read More
Windows 10 Enterprise: Keyboard Not Detected in Managed Organization with Admin Privileges

Resolve Windows 10 Enterprise keyboard detection failures caused by Group Policy restrictions, driver corruption, or USB enumeration errors.

Read More
Can't Find x86_64 Versions of Applications on MacOS arm64 (M1)

Resolve missing x86_64 app issues on M1 Macs by installing Rosetta 2 and reinstalling apps as universal binaries.

Read More
How to Hide Installation Source for an Android App

Manage Android app installation source visibility by using USB transfers or file managers to reduce browser traces and isolate data via work profiles.

Read More
Connecting Momentus 4200.2 ST9808210A Hard Drive via USB Cable

Resolve inability to access Seagate Momentus 4200.2 ST9808210A hard drive by connecting it via USB using a compatible SATA-to-USB adapter and configuring the disk in Windows.

Read More