Let's encrypt

Installation CertBot

pacman -S certbot

Verzeichnis anlegen

mkdir -p /var/lib/letsencrypt/.well-known
chgrp http /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt

Nginx vorbereiten

Die Hauptdomain bzw. die erste Domain in einem Multi-Zertifikat muss im Nginx speziell vorbereitet werden, damit die Anfrage von Let’s Encrypt erfolgen kann.

/etc/nginx/includes/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}

In der jeweilgen Serverkonfiguration bei Port 80 einen include der Regel

Server {
...
include includes/letsencrypt.conf;
...
}

Zertifikat erstellen

certbot certonly --email email@example.com --webroot -w /var/lib/letsencrypt/ -d domain.tld,sub.domain.tld

Zertifikat in Nginx einbinden

ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;

Zertifkat erneuern

certbot renew

Erneuern automatisieren

/etc/systemd/system/certbot.service

[Unit]
Description=Let's Encrypt renewal

[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet --agree-tos

[Install]
WantedBy=multi-user.target

/etc/systemd/system/certbot.timer

[Unit]
Description=Twice daily renewal of Let's Encrypt's certificates

[Timer]
OnCalendar=0/12:00:00
RandomizedDelaySec=1h
Persistent=true

[Install]
WantedBy=timers.target
systemctl enable certbot
systemctl start certbot