All websites should be encrypted using https! Many are not. If you are not encrypting our websites, then users data can be leaked to anyone. If you would like your website to appear high on Google's search results, and you care about user privacy online, then you should try "Let's Encrypt". Let's Encrypt is a free certificate authority, and everybody should use it!
In order to start using let's encrypt, you need to prove to the "Let's Encrypt" people that you actually own your website. "Certbot" is a program that will help you do this. Certbot can generate a certificate for you, and create a secret file on your webserver. Certbot then will navigate to that file to check that you actually own the website. Then your certificate will work.
You will also have to automatically renew your certificates. Certbot can periodically renew your certificates for you.
As of [2018-04-09 Mon], the nginx plugin to certbot does not support confirming that I control a domain. For example, when I try to do that I get this error:
sudo certbot --nginx -d gnucode.me -d www.gnucode.me
sudo: unable to resolve host RichardRahl Saving debug log to /var/log/letsencrypt/letsencrypt.log Obtaining a new certificate Performing the following challenges: Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA. Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.
So I have to use the webroot command. This command can be an authenticator and an installer?
certbot [subcommand] [options]
Authenticators verify that you can change content on your website. The subcommand certonly is an authenticator.
Authenticators install the certificate, confirms that you own your domain, but does not edit your nginx or apache's files. Certbot can issue a single certificate to use for all of your domains, but you need to specify all of the domains.
It installs the certificate in the etc/letsencrypt directory. You could use a symlink to point to the certificate.
This authenticates two domains: gnusites.com and gnucode.me
sudo certbot certonly --webroot -w var/www/html/gnusites.com/public_html -d www.gnusites.com -d gnusites.com -w var/www/html/gnucode.me/public_html -d www.gnucode.me -d gnucode.me
The output of the command tells me:
sudo: unable to resolve host richardrahl Saving debug log to /var/log/letsencrypt/letsencrypt.log Obtaining a new certificate Performing the following challenges: http-01 challenge for www.gnusites.com http-01 challenge for gnusites.com http-01 challenge for www.gnucode.me http-01 challenge for gnucode.me Using the webroot path /var/www/html/gnucode.me/public_html for all unmatched domains. Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
It should have created a temporary file at ${webroot-path}/.well-known/acme-challenge
Nginx tells me that gnusites.com/.well-known/acme-challenge does not exist.
Wordpress tells me that gnucode.me/.well-known/acme-challenge cannot be found.
The command tells me that it challenged www.gnusites.com, gnusite.com, gnucode.me, and www.gnucode.me.
I'm getting weird errors. Gnusites is encrypted, but https://gnucode.me is serving gnusites...?
gnusites.com works just fine.
Here is the code that I pulled from this online tutorial: https://www.nginx.com/blog/using-free-ssltls-certificates-from-lets-encrypt-with-nginx/
grep "RSA" -A 10 /etc/nginx/sites-enabled/gnusites.com
# RSA certificate ssl_certificate /etc/letsencrypt/live/www.gnusites.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/www.gnusites.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# Redirect non-https traffic to https if ($scheme != "https") { return 301 https://$host$request_uri; } # managed by Certbot
joshua@richardrahl:/var/www/html/laundrysucks.io/public_html$ sudo certbot certonly --webroot -w var/www/html/laundrysucks.io/public_html -d laundrysucks.io sudo: unable to resolve host richardrahl [sudo] password for joshua: Saving debug log to /var/log/letsencrypt/letsencrypt.log Obtaining a new certificate Performing the following challenges: http-01 challenge for laundrysucks.io Using the webroot path /var/www/html/laundrysucks.io/public_html for all unmatched domains. Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0002_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0002_csr-certbot.pem
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
joshua@richardrahl:/var/www/html/gnu-hurd.com/.well-known$ sudo certbot certonly --webroot -w var/www/html/gnu-hurd.com/public_html -d gnu-hurd.com -d www.gnu-hurd.com sudo: unable to resolve host richardrahl Saving debug log to /var/log/letsencrypt/letsencrypt.log Obtaining a new certificate Performing the following challenges: http-01 challenge for gnu-hurd.com http-01 challenge for www.gnu-hurd.com Using the webroot path /var/www/html/gnu-hurd.com/public_html for all unmatched domains. Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0003_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0003_csr-certbot.pem
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
ls
dead.letter grep
cat grep
rm grep
ls
dead.letter
This gets a certificate for a website the specific spot you have certbot certonly --webroot -w /var/www/html/matomo/public_html -d www.gnucode.me -d gnucode.me
certbot revoke --cert-path /path/to/certificate
This command expands a certificate to include a new domain name. existing.com and www.existing.com were domains that the certificate already had. But I added the two domains: blog.existing.com and www.blog.existing.com. =certbot --cert-name existing.com -d existing.com,www.existing.com,blog.existing.com,www.blog.existing.com=