Configure Let’s Encrypt SSL on Windows Server Apache

Advertisement

Securing your website with SSL is a crucial step in today’s digital era. This article guides you through the process of configuring Let’s Encrypt SSL on Windows using an Apache server, providing a practical tutorial to obtain a valid free SSL certificate.

Advertisement

Secure Sockets Layer (SSL) or its successor, Transport Layer Security (TLS), is a vital cryptographic protocol. It is designed to secure data communication between a user’s browser and a website server. By enabling SSL, you create an encrypted pathway that protects sensitive information from eavesdropping.

The benefits of using SSL extend beyond just security. This certificate also builds visitor trust. Modern browsers display a padlock icon and the HTTPS prefix in the address bar for secure sites. Furthermore, SSL is a positive ranking factor for search engines like Google.

Advertisement

Below is a complete guide to configuring a Let’s Encrypt SSL on Windows with the Apache web server, using the popular client called win-acme.

Configuration Prerequisites

  • A computer running Windows or Windows Server OS.
  • Apache 2.4 (e.g., from an XAMPP package) is installed. This guide assumes an installation path of C:\xampp\apache.
  • A domain or subdomain already pointed (via a DNS A record) to your web server’s IP address.
  • Access to run Command Prompt (CMD) as an Administrator.

Step 1: Download the Win-ACME Client

We will use the official client, win-acme (formerly letsencrypt-win-simple), which supports the ACMEv2 protocol to obtain certificates from Let’s Encrypt. Visit the win-acme releases page on GitHub. Download the latest stable version (e.g., win-acme.v2.x.x.x64.pluggable.zip).

Advertisement

Once downloaded, extract the ZIP file contents to a folder, for example, C:\win-acme.

Step 2: Run Win-ACME

Open the C:\win-acme folder. Then, run the wacs.exe file by right-clicking and selecting Run as administrator“. The win-acme command-line interface will open.

Initial interface of win-acme Let's Encrypt on Windows Command Prompt
Figure 1: Main interface of win-acme when first launched.

Step 3: Create a New Let’s Encrypt SSL Certificate

In the main win-acme window, type the letter M and press Enter to start the new certificate creation process (Create new certificate).

Main win-acme menu options for creating a new SSL certificate
Select option ‘M’ to create a Let’s Encrypt certificate.

Next, you will be prompted to choose an input type. Select option 2 for “Manual input“. This option is suitable if you want to specify the domain name directly.

Selecting manual input mode for the Let's Encrypt certificate domain

Enter your full domain name (example: bardimin.com) and press Enter. If you need a certificate for a subdomain (like www.bardimin.com), you can add it at this step by separating names with a comma.

Input field for entering the target domain name for the SSL certificate

Then, choose the validation method. For a local Apache web server, select option 1: [http-01] Serve verification files on (network) path.

Choosing the http-01 domain validation method in win-acme

You will be asked to enter the path to your website’s root directory. If using XAMPP, the path is typically C:\xampp\htdocs\.well-known\acme-challenge\. However, you can simply enter C:\xampp\htdocs. Win-acme will automatically create the necessary subdirectories.

Specifying the website root directory location for Let's Encrypt validation

If prompted to copy a web.config file, choose N (No). Next, select the private key type. The current recommendation is 2 (RSA key) with a size of 2048 or 4096 bits.

Choosing the type and size of RSA key for the SSL certificate

For the storage format, select option 2: PEM encoded files (Apache, nginx, etc.). This format is compatible with Apache on Windows.

Selecting the PEM file format for the Apache SSL certificate

Specify the folder to store the certificate files. It is recommended to store them within the Apache configuration folder, for example, C:\xampp\apache\conf\ssl\. Create the ssl folder first if it doesn’t exist. Alternatively, you can use C:\xampp\apache\conf.

Specifying the storage location for the generated SSL certificate files

For additional store steps, select 5: No (additional) store steps. Similarly, for installation steps, select 5: No (additional) installation steps. We will configure Apache manually.

Options to skip additional store and installation steps

The next process is agreeing to the Let’s Encrypt Terms of Service. You will be asked to open the Terms of Service document (choose Y or N) and then agree to them (must choose Y). For the notification email, you can leave it blank by pressing Enter.

Process of agreeing to Let's Encrypt terms of service in win-acme

Win-acme will now execute the certificate request and validation process. If successful, you will see a success message and the location of the certificate files. Typically, two main files are created: bardimin.com-chain.pem (the combined certificate) and bardimin.com-key.pem (the private key).

Successful generation of Let's Encrypt SSL certificate on Windows screen
Figure 2: Successful validation and issuance of a Let’s Encrypt SSL on Windows certificate.

Step 4: Configure Apache to Use the SSL Certificate

After the certificate is created, you need to configure the Apache virtual host for HTTPS port (443). Open the httpd-ssl.conf file or your main virtual host configuration file (usually located in C:\xampp\apache\conf\extra\httpd-ssl.conf or C:\xampp\apache\conf\httpd.conf).

Add or edit the VirtualHost configuration block for port 443. Ensure the paths to the certificate and private key files match your storage location.

<VirtualHost *:443>
    ServerName bardimin.com
    DocumentRoot "C:/xampp/htdocs/bardimin.com"
    
    SSLEngine on
    SSLCertificateFile "conf/ssl/bardimin.com-chain.pem"
    SSLCertificateKeyFile "conf/ssl/bardimin.com-key.pem"
    
    <Directory "C:/xampp/htdocs/bardimin.com">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Save the configuration changes. Then, restart the Apache service via the XAMPP Control Panel or Command Prompt.

Step 5: Verify Successful SSL Installation

Open a browser and access your website using HTTPS, for example, https://bardimin.com. If the configuration is successful, you will see a padlock icon to the left of the address bar. Click the padlock icon to view certificate details, including the issuer “Let’s Encrypt” and the validity period.

Padlock icon in browser indicating a secure HTTPS connection with active SSL
Secure connection (HTTPS) indicator in the browser after successful SSL certificate application.

Important: Let’s Encrypt certificates are only valid for 90 days. However, win-acme is typically scheduled automatically as a Windows Task Scheduler job to renew the certificate before it expires. You can verify this in the Windows “Task Scheduler” application.

By following the steps above, your website is now protected by a valid Let’s Encrypt SSL certificate. This process not only enhances security but also boosts your site’s credibility in the eyes of users and search engines. Congratulations!

Latest Articles