[cPanel] Free LetsEncrypt SSL issue, deployment and auto-renew on shared hosting

Managing SSL certificates across multiple shared hosting accounts can quickly become a time-consuming headache. If you’re like me and have several domains spread across platforms like NameCheap’s shared hosting, you’ve probably noticed their SSL policy: a 1-year free PositiveSSL certificate for new domains, followed by paid renewals. While switching to free Let’s Encrypt certificates sounds like a great alternative, the manual renewal process every 90 days becomes tedious—especially when you’re juggling multiple accounts and domains.

The good news? There’s a way to automate Let’s Encrypt SSL renewals on shared hosting without upgrading to premium plugins or switching providers. Once you set it up, your certificates will auto-renew in the background, saving you hours of repetitive work.

This guide works with any shared hosting platform using cPanel, and the setup process is straightforward—taking just a few minutes per domain. Here’s how to do it:

Step 1: Enable Manage Shell

1.1 – Log in to your Namecheap cPanel.

1.2 – Navigate to the ‘Manage Shell’ and then “Enable SSH access”.

Step 2: Open the cPanel Terminal

cPanel > ‘Advanced’ section > Open ‘Terminal’

Step 3: Install acme.sh

In the Terminal run these commands to install acme, make it auto-upgrade and then set the default SSL provider to Let’s Encrypt:

curl https://get.acme.sh | sh

acme.sh –upgrade –auto-upgrade

acme.sh –set-default-ca –server letsencrypt

Step 4: Issue and install SSL certificates

4.1. SSL issue command:

acme.sh –issue -d DOMAIN.COM -w /home/PATH_TO/WEBSITE_DIRECTORY –server letsencrypt –force

4.2. Install command:

acme.sh –deploy -d DOMAIN.COM –deploy-hook cpanel_uapi

Step 5: You’re done. Congrats!

By following these steps, you should have a fully functioning SSL setup for your domain with auto-renewal configured. You can review all domains in the auto-renewal list with this command:

acme.sh –list

You can also verify the deploy hook is saved for each live domain with this command (copy all three lines at once):

for f in ~/.acme.sh/*_ecc/*.conf; do

  echo “== $f ==”; grep -E ‘Le_DeployHook|Le_Webroot’ “$f”

done

You can now navigate back to cPanel > ‘Manage Shell’ and disable it.


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *