Let's Encrypt auf einem Cloud Server mit nginx und certbot (certonly) installieren

Jetzt für nur 1 Euro testen!
Habt Ihr große Hosting-Projekte mit vielen Ressourcen? Mit dem CloudServer (VPS) von hosting.de ist das kein Problem. Dank unserem umfangreichen Angebot an Hosting Tools genießt Ihr absolute Freiheit. Natürlich kann das Betriebssystem per Knopfdruck frei gewählt werden.
Jetzt Cloud Server buchen

Einleitung

Will man Let’s Encrypt Zertifikate nutzen, ohne das Certbot die Webserverkonfiguration ändert, muss für die HTTP Challenge der Webserver passend vorbereitet werden.

Voraussetzungen

  • Sie verfügen über einen hosting.de Cloud Server, welcher einen gültigen DNS-Eintrag, z.B. demo.mustermann-domain.de besitzt.
  • Eine privilegierte Shell auf dem System.

Pakete installieren

apt update
apt install nginx certbot

Nginx konfigurieren

Ein Verzeichnis für die HTTP Challenges erstellen

mkdir /var/www/letsencrypt

Nginx Snippet zum Einbinden in verschiedenen vhost unter /etc/nginx/snippets/letsencrypt.conf mit folgendem Inhalt erstellen

location ^~ /.well-known/acme-challenge/ {
    default_type "text/plain";
    root /var/www/letsencrypt;
}

Konfiguration für den vhost bearbeiten (z.B. unter /etc/nginx/sites-enabled/demo.mustermann-domain.de)

server {
    listen 80;
    server_name demo.mustermann-domain.de;
    include snippets/letsencrypt.conf;
    location / {
        return 301 https://$server_name$request_uri;
    }
}

Danach die Nginx Konfiguration mit nginx-t auf Korrektheit prüfen und den Websever neustarten (systemctl restart nginx.service)

Certbot konfigurieren

Braucht man keine Erinnerungsmail bei auslaufenden Zertifikaten kann man certbot auch ohne Email Adresse betreiben (--register-unsafely-without-email)

certbot certonly --webroot -w /var/www/letsencrypt/ -d demo.mustermann-domain.de --register-unsafely-without-email

Nachdem certbot fertig ist, mit systemctl list-timers kontrollieren ob der certbot.timer aktiv ist.

Zertifikate in Nginx einbinden

Hat man noch keine SSL / TLS Zertifikate in Nginx eingebunden, kann man den SSL Configuration Generator von Mozilla als Hilfe verwenden. Soll die gleiche SSL Konfiguration in mehreren Vhosts verwendet werden bietet sich wieder die Nutzung eines Snipptes an. Hierfür die Datei /etc/nginx/snippets/mozilla-modern.conf mit folgendem Inhalt erstellen

   listen 443 ssl http2;
   listen [::]:443 ssl http2;

   ssl_session_timeout 1d;
   ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
   ssl_session_tickets off;

   ssl_protocols TLSv1.3;
   ssl_prefer_server_ciphers off;

   add_header Strict-Transport-Security "max-age=63072000" always;

   ssl_stapling on;
   ssl_stapling_verify on;

   resolver 95.129.51.51;

Jetzt muss noch die Datei /etc/nginx/sites-enabled/demo.mustermann-domain.de für die Nutzung der Zertifikate erweitert werden

server {
   server_name demo.mustermann-domain.de;

   include snippets/mozilla-modern.conf;

   ssl_certificate /etc/letsencrypt/live/demo.mustermann-domain.de/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/demo.mustermann-domain.de/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/demo.mustermann-domain.de/fullchain.pem;

   . . .

}

Danach die Nginx Konfiguration wieder mit nginx-t auf Korrektheit prüfen und den Websever neustarten (systemctl restart nginx.service)

Referenzen