Lets face it, setting up SSL can be a beyatch. Apart from setting up locally, then it is really easy (comparatively).

Definitions

SSL
Secure sockets layer - a protocol which encrypts data so it is only decrypt-able between the sessions client and server. If you intercept any of the packets they will look like jumbled nonsense
TLS
Transport layer security. A more efficient and secure protocol than SSL
HTTPS
Hypertext transfer protocol secure, which means it implements SSL
Digital certificate
An identifying document for a person, device, domain, organisation, publisher etc. Like a passport. It is issued by a trusted authority (or can be self-signed)
SSL certificate
An digital certificate containing things such as version, serial number, signature, valid dates, name of owner, public key, subject, and who issued the certificate etc. It attests that you is legit
CA
Certificate Authority. An organisation that issues digital certificates if you can prove you own the domain

Creating unsigned local certs

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /path/localhost.key -out /path/localhost.crt

Lets Encrypt

Letsencrypt is a free, automated, and open Certificate Authority. I was going to write a lot more details but this awesome guide will show you how to setup a certificate and use in Nginx.

Resources