====== Zertifikate - Let's encrypt ======
https://www.c-rieger.de/nextcloud-installationsanleitung/
**Voraussetzung**:
* Eine lauffähige Webserver-Umgebung, wie z.B. in der [[server:hc|]]
* Ports 80 und 443 müssen im Router freigeschaltet sein und auf diesen Server zeigen.
===== Vorbereitungen =====
sudo -i
apt install socat
===== Firewall =====
ufw allow 80/tcp
ufw allow 443/tcp
systemctl restart ufw
ufw status
===== Diffie-Hellmann Schlüssel =====
sudo -i
openssl dhparam -dsaparam -out /etc/ssl/dhparam.pem 4096
===== Testzertifikate =====
apt install ssl-cert
make-ssl-cert generate-default-snakeoil -y
===== Let's encrypt =====
sudo -i
# Vorbereitungen
# Verzeichnisse und Berechtigungen
mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
chmod -R 775 /var/www/letsencrypt
chown -R www-data:www-data /var/www/
mkdir -p /etc/letsencrypt/certs-rsa
mkdir -p /etc/letsencrypt/certs-ecc
chmod -R 770 /etc/letsencrypt
chown -R www-data:www-data /etc/letsencrypt
# ACME Benutzer erzeugen
adduser --disabled-login acmeuser
usermod -a -G www-data acmeuser
visudo
...
# User privilege specification
root ALL=(ALL:ALL) ALL
acmeuser ALL=NOPASSWD: /bin/systemctl reload nginx.service
...
# ACME Installation
su - acmeuser
curl https://get.acme.sh | sh
exit
# Let's encrypt als Standard-CA für den Server
su - acmeuser -c ".acme.sh/acme.sh --set-default-ca --server letsencrypt"
# Zertifikate als User acme beantragen
su - acmeuser
# RSA
acme.sh --issue -d --server letsencrypt --keylength 4096 -w /var/www/letsencrypt --key-file /etc/letsencrypt/certs-rsa/-key.pem --ca-file /etc/letsencrypt/certs-rsa/-chain.pem --cert-file /etc/letsencrypt/certs-rsa/-crt.pem --fullchain-file /etc/letsencrypt/certs-rsa/-crt+chain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
# ECC
acme.sh --issue -d --server letsencrypt --keylength ec-384 -w /var/www/letsencrypt --key-file /etc/letsencrypt/certs-ecc/-key.pem --ca-file /etc/letsencrypt/certs-ecc/-chain.pem --cert-file /etc/letsencrypt/certs-ecc/-crt.pem --fullchain-file /etc/letsencrypt/certs-ecc/-crt+chain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
exit
# Kontrolle cron Job für ACME User
crontab -l -u acmeuser