Let’s Encrypt SSL certificate in Namecheap AutoRenewal – Verified & working – Using ACME.sh
Tags: ssl, namecheap, acme, letsencrypt
Published: 2020-09-18 08:22:41

NameCheap doesn't support Let's Encrypt natively, But provides option so you can setup LetEncrypt SSL certificates using different utilities like getSSL or ACME.sh, having used both found acme.sh to be quite better and simple to use + it supports auto renewal too.

1 - Enable SSH to get into your shared hosting server with your cpanel username.(You can get keys & login from your terminal or use inbuilt capnel terminal for quick access)

2 - Get the certs 
```
#Get acme.sh utility
curl https://get.acme.sh | sh

#Source the Environment variables
source ~/.bashrc

#Register your email with Lets's Encrypt to be notified any renewals issue
acme.sh --register-account --accountemail email@example.com

# At this moment a cron entry already has been setup for autorenewal which will auto renew after 60 days., You can update /dev/null to something like this if you need the log
crontab -l | grep acme.sh
10 0 * * * "/home/_CPANEL_USERNAME_/.acme.sh"/acme.sh --cron --home "/home/_CPANEL_USERNAME_/.acme.sh" >> /home/_CPANEL_USERNAME_/.acme_cron_log
```

4 – Issue a test cert to check if all working

```
#webroot will be any directory in which your domain exist, give path accordingly.
acme.sh --issue --webroot ~/public_html -d yourdomain.com --staging
```
5 – issue an actual Certificate

```
acme.sh --issue --webroot ~/public_html -d yourdomain.com --force

#In ourput you will see success if all goes fine & key/Certs/chaincerts/csr will be stored under below location, you can refer those if you intend to apply those using cpanel GUI manually

~/.acme.sh/yourdomain.com/
```
6 - Apply Cert to website using cPnel hook
```
acme.sh --deploy --deploy-hook cpanel_uapi --domain yourdomain.com
```

7 – You should be able to see your domain with SSL in cpanel under SSL/TLS -> Manage all certs

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/2uucnmg7l6pgr69km333.png)

8 - Force HTTP-HTTPS redirection
If you see option to enable you can enforce HTTP from cpanel itself:
```
cPanel->Domains

```
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qvatl9pf8gtjonf7jtrd.PNG)

In case it is greyed out, which could be in case you have multiple domains like www.yourdomain.com for which you don’t have the cert , Enable the redirection from “redirects” or simply add below lines in .htaccess file

```
#always backup as a thumb of rule
vi ~/public_html/.htaccess 

Or

vi ./yourdomain.com/.htaccess 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
```

9 – test your website in new window with URL: https://yourdomain.com or http://yourdomain.com( in http it should redirect automatically to https)

So you are all done now, If you need a more detailed Article you can checkout the original article on below link: 
[devops.egyan.space](https://devops.egyan.space/applying-lets-encrypt-ssl-certificate-in-namecheap-in-2020-with-autorenewal-verified-working-using-acme-sh/) 

Glad if this helped you, You can [now buy me a coffee](https://www.buymeacoffee.com/AnujTomar ) if this was helpful: