Hey,
In diesem Beitrag erkläre ich euch die Einrichtung von SSL Zertifikaten für Domains.
Dafür benötigen wir eine Domain und Certbot. Wir zeigen hier wie man das am besten mit Cloudflare lösen kann.
Die Befehle sind für Ubuntu, sollten aber auch auf anderen Betriebssystem so oder ähnlich funktionieren.

## Snap store für Certbot installieren
apt install snapd && snap install snap-store

# Certbot installieren
snap install –classic certbot

# Phython für Cloudflare-DNS für Certbot installieren
apt install python3-pip -y

# Cloudflare DNS installieren
pip3 install certbot-dns-cloudflare

# .secrets Ordner erstellen
mkdir /root/.secrets/

# API Token von Cloudflare einfügen
Dafür erstellen wir eine cloudflare.ini Datei und fügen unsere Daten wie folgt ein:

dns_cloudflare_api_token = "derApiTokenhier"

# Berechtigungen für .secrets Ordner setzen
chmod 0700 /root/.secrets/ -R
chmod 0400 /root/.secrets/* -R

# Zertifikat erstellen
certbot certonly –dns-cloudflare –dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d yourmcshop.com,*.yourmcshop.com –preferred-challenges dns-01

# Jetzt kann die NGINX Konfiguration angepasst werden (z.B. http://www.yourmcshop.com)

server {
    listen         443 ssl http2;
    listen         [::]:443 ssl http2;
    server_name    yourmcshop.com www.yourmcshop.com;
    root           /var/www/www.yourmcshop.com;
    index          index.php;
    
    # Logs (access and errors)
    error_log  /var/log/nginx/www.yourmcshop.com/error.log  info;
    access_log  /var/log/nginx/www.yourmcshop.com/access.log;
    
    ssl_certificate /etc/letsencrypt/live/yourmcshop.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourmcshop.com/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    # See https://ssl-config.mozilla.org/#server=nginx for the latest ssl settings recommendations
    # An example config is given below
    ssl_protocols TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5:!SHA1:!kRSA;
    ssl_prefer_server_ciphers off;
    
    client_body_buffer_size 100M;
    client_max_body_size 30M;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~* \.php$ {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        include         fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_index index.php;
    }
    
    #Hide the nginx version.
    server_tokens off;
    
    #Hide the PHP version.
    fastcgi_hide_header X-Powered-By;
    proxy_hide_header X-Powered-By;
    
    autoindex off;
}