Install Let's Encrypt's SSL Certificates manually in an Easy Engine Powered Setup
Ref :
Certbot is a tool to obtain Let's Encrypt certificate ref: https://certbot.eff.org/ , you can install certbot in your local machine, but to enjoy the benefit of it's available plugin for nginx, you need to install it on the same machine as your web server.
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
Certbot will be our main tool which will handle all of the processes required to implement the cert.
$ which certbot
/usr/bin/certbot
$ certbot --help
-------------------------------------------------------------------------------
certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...
Certbot can obtain and install HTTPS/TLS/SSL certificates. By default,
it will attempt to use a webserver both for obtaining and installing the
certificate. The most common SUBCOMMANDS and flags are:
obtain, install, and renew certificates:
(default) run Obtain & install a certificate in your current webserver
certonly Obtain or renew a certificate, but do not install it
renew Renew all previously obtained certificates that are near
expiry
-d DOMAINS Comma-separated list of domains to obtain a certificate for
...
Assumed that you are already familiar with setting up easy engine on hosting your websites, we will walk through the steps on how to obtain the certificate for a specific installed domain or sub.domain. These method will modify Nginx vhost configuration set up by Easy Engine on the existing config utilizing hooks provided by Easy Engine.
Certbot Syntax
certbot certonly --pre-hook "service nginx stop" --standalone --cert-name yourdomain.tld -d yourdomain.tld -d www.yourdomain.tld --post-hook "service nginx start" --rsa-key-size 4096 -n --agree-tos -m me@yourdomain.tld
NOTE
On a successful attempt certbot will display the information on the location of your certs.
Running pre-hook command: service nginx stop
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for chat.xxxxxxx.pro
Waiting for verification...
Cleaning up challenges
Running post-hook command: service nginx start
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/chat.xxxxxxx.pro/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/chat.xxxxxxx.pro/privkey.pem
Your cert will expire on 2018-03-24. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Since we are using Easy Engine, we don't have to modify the vhost configuration manually, we will use ee site update
command which will do these for us;
server { }
directive inside the vhost.conf file which will holds the configs of the secured website, basically the same with before SSL implemented with changes on port setup (using 443), host setup using HTTP2 (optional), turn on SSL and let Nginx know where to find the certs for the domain.ee site update command
$ ee site update chat.xxxxxx.pro --letsencrypt
Letsencrypt is currently in beta phase.
Do you wish to enable SSl now for chat.xxxxxx.pro?
Type "y" to continue [n]:y ## ==> type y to continue
You already have an existing certificate for the domain requested.
(ref: /etc/letsencrypt/renewal/chat.xxxxxx.pro.conf)
Please select an option from below?
1: Reinstall existing certificate
2: Keep the existing certificate for now ## ==> choose number 2
3: Renew & replace the certificate (limit ~5 per 7 days)
Type the appropriate number [1-3] or any other key to cancel: 2
Using Existing Certificate files
Let's Encrypt successfully setup for your site
Your certificate and chain have been saved at /etc/letsencrypt/live/chat.xxxxxx.pro/fullchain.pem
Configuring Nginx SSL configuration
Adding /var/www/chat.xxxxxx.pro/conf/nginx/ssl.conf
Adding /etc/nginx/conf.d/force-ssl-chat.xxxxxx.pro.conf
Added HTTPS Force Redirection for Site http://chat.xxxxxx.pro
Creating Cron Job for cert auto-renewal
Reload : nginx [OK]
Congratulations! Successfully Configured SSl for Site https://chat.xxxxxx.pro
Your cert will expire within 89 days.
NOTES
$ curl -I https://chat.xxxxxx.pro
HTTP/2 403
server: nginx
date: Sun, 24 Dec 2017 09:26:07 GMT
content-type: text/html
content-length: 162
vary: Accept-Encoding
$ crontab -l
0 0 * * 0 ee site update --le=renew --all 2> /dev/null # Renew all letsencrypt SSL cert. Set by EasyEngine