Let's Encrypt Certificates and certbot#
All websites should use TLS. We use an Ansible role that will automatically install certbot, a free secure certificate from Let's Encrypt, and create a cron job that will automatically renew the certificate.
Installation#
You need to install the role.
cd ansible-playbook
git clone https://github.com/geerlingguy/ansible-role-certbot.git geerlingguy.certbot
Configuration#
To use the role, you need to add the following variables to your local-configure.yml
, and substitute your values as needed.
# https://github.com/geerlingguy/ansible-role-certbot#role-variables
# override roles/geerlingguy.certbot/defaults/main.yml
certbot_create_if_missing: true
certbot_admin_email: email@example.com
certbot_auto_renew_options: '--quiet --no-self-upgrade
--pre-hook "service nginx stop" --post-hook "service nginx start"'
certbot_certs:
- domains:
- "{{ inventory_hostname }}"
webserver_virtualhosts:
- hostname: "{{ inventory_hostname }}"
port: 80
protocol: http
extra: return 301 https://$server_name$request_uri;
- hostname: "{{ inventory_hostname }}"
default_server: yes
zodb_path: /Plone
address: 1.1.1.1
port: 443
protocol: https
certificate:
key: /etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem
crt: /etc/letsencrypt/live/{{ inventory_hostname }}/fullchain.pem
The above configuration redirects all traffic from http
to https
, using the extra
key mentioned in Web Hosting Options.