Using Let's Encrypt SSL without Global Public IP

As an admin you might have come across instances where some of your websites are accessible only in your local network and installing/renewing Let's Encrypt SSL is not directly possible ad for default installation you require the website to be globally available.

Solution

DNS Challenge 

How to

Download the acme-dns-certbot plugin

$ wget https://github.com/joohoi/acme-dns-certbot-joohoi/raw/master/acme-dns-auth.py

$ nano acme-dns-auth.py   # replace python to python3

--#!/usr/bin/env python
++#!/usr/bin/env python3

$ chmod +x acme-dns-auth.py

$ sudo mv acme-dns-auth.py /etc/letsencrypt/

$ sudo certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py --preferred-challenges dns --debug-challenges -d \*.domainname

# this will generate a CNAME which will have to be added to your DNS Panel/Manager, once you add press enter to complete the challenge and on successfull verification certificate will be issued which can be used for installtion