Skip to content

Let's Encrypt installieren

Verschoben Let's Encrypt
  • Was ist Let's Encrypt?

    Let’s Encrypt (deutsch „Lasst uns verschlüsseln“) ist eine Zertifizierungsstelle, die Ende 2015 in Betrieb gegangen ist und kostenlose X.509-Zertifikate für Transport Layer Security (TLS) anbietet. Dabei ersetzt ein automatisierter Prozess die bisher gängigen komplexen händischen Vorgänge bei der Erstellung, Validierung, Signierung, Einrichtung und Erneuerung von Zertifikaten für verschlüsselte Websites.

    Quelle: de.wikipedia.org

    Ziel des Ganzen ist es, den Datentransport zwischen dem Client und dem Webserver zu verschlüsseln, so das unterwegs niemand die Daten mitlesen kann.

    Vorbereitung

    Bei meinem Serverumzug ist folgendes aufgefallen.

     Sep 29 14:22:27 amadeus nginx[1078]: nginx: [emerg] BIO_new_file("/etc/nginx/dhparams.pem") failed (SSL: error:02001002:system
    

    Nginx meckert über einen nicht vorhanden Schlüssel. Hmm, etwas googlen und fündig geworden.

    Man muss mittels openssl erstmal einen geheimen privaten Key erzeugen.

    root@amadeus /etc/letsencrypt # openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    Generating DH parameters, 2048 bit long safe prime, generator 2
    This is going to take a long time
    ...........................................................................+...................................................................
    (gekürzt)
    

    Das erzeugt im angegebenen Verzeichnis einen 2048 Bit langen Schlüssel. Ganz ängstliche wählen 4096 Bit. Mit der Option "-aes256" kann man den Key auch noch mit einem Passwort verschlüsseln.

    Das File in den Ordner /etc/nginx kopieren und fertig. Ich habe da noch ein kleines Problem, das in der Konfiguration das File dhparams.pem heißt, das erzeugte File aber dhparam.pem. Vermutlich ein Tippfehler von mir, schau ich mir nochmal an. Vorerst habe ich die Datei einfach umbenannt.

    Installation

    Nach dem Hinweis meines Sysadmins 🙂 muss ich das hier noch ein wenig verfeinern.

    apt install letsencrypt
    

    Danach

    root@one /opt/letsencrypt # /etc/init.d/nginx stop
    [ ok ] Stopping nginx (via systemctl): nginx.service.
    root@one /opt/letsencrypt # letsencrypt certonly --standalone -d frank-mankel.org -d www.frank-mankel.org
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Plugins selected: Authenticator standalone, Installer None
    Obtaining a new certificate
    Performing the following challenges:
    http-01 challenge for frank-mankel.org
    http-01 challenge for www.frank-mankel.org
    Waiting for verification...
    Cleaning up challenges
    
    IMPORTANT NOTES:
     - Congratulations! Your certificate and chain have been saved at:
       /etc/letsencrypt/live/frank-mankel.org/fullchain.pem
       Your key file has been saved at:
       /etc/letsencrypt/live/frank-mankel.org/privkey.pem
       Your cert will expire on 2018-07-13. To obtain a new or tweaked
       version of this certificate in the future, simply run
       letsencrypt-auto again. To non-interactively renew *all* of your
       certificates, run "letsencrypt-auto renew"
     - If you like Certbot, please consider supporting our work by:
    
       Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
       Donating to EFF:                    https://eff.org/donate-le
    

    Das hat schon mal geklappt!!

    Hinweis

    Der Certbot kann je nach System entweder

    certbot-auto
    

    oder

    certbot
    

    heißen. Quelle: https://certbot.eff.org/docs/intro.html#installation

    Hier liegen die Zertifikate

    /etc/letsencrypt/live/frank-mankel.org
    

    Dort liegen jetzt folgende Files:

    root@one /etc/letsencrypt/live/frank-mankel.org # ls -l
    total 4
    lrwxrwxrwx 1 root root  40 Apr 14 15:15 cert.pem -> ../../archive/frank-mankel.org/cert1.pem
    lrwxrwxrwx 1 root root  41 Apr 14 15:15 chain.pem -> ../../archive/frank-mankel.org/chain1.pem
    lrwxrwxrwx 1 root root  45 Apr 14 15:15 fullchain.pem -> ../../archive/frank-mankel.org/fullchain1.pem
    lrwxrwxrwx 1 root root  43 Apr 14 15:15 privkey.pem -> ../../archive/frank-mankel.org/privkey1.pem
    -rw-r--r-- 1 root root 543 Apr 14 15:15 README
    

    Zertifikate in nginx einbauen

    nginx stoppen:

    /etc/init.d/nginx stop
    

    Meine alte nginx Datei OHNE https. Datei default

    server {
    if ($host != 'frank-mankel.org' ) {
    rewrite ^/(.*)$ http://frank-mankel.org/$1 permanent;
    }
    
        listen 80;
    
        server_name frank-mankel.org;
    
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://127.0.0.1:4567;
            proxy_redirect off;
    
            # Socket.IO Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
    

    NEUE Datei mit https!!

    ### redirects http requests to https
    
    server {
        server_name  www.frank-mankel.org;
        rewrite ^(.*) http://frank-mankel.org$1 permanent;
    }
    
    
    
    server {
        listen 80;
        server_name frank-mankel.org;
        return 302 https://$server_name$request_uri;
    }
    
    ### the https server
    server {
        # listen on ssl, deliver with speedy if possible
        listen 443 ssl spdy;
    
        server_name frank-mankel.org;
    
    
        # change these paths!
        ssl_certificate /etc/letsencrypt/live/frank-mankel.org/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/frank-mankel.org/privkey.pem;
    
        # enables all versions of TLS, but not SSLv2 or 3 which are weak and now deprecated.
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
        # disables all weak ciphers
        ssl_ciphers 'AES128+EECDH:AES128+EDH';
    
        ssl_prefer_server_ciphers on;
    
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://127.0.0.1:4567;  # no trailing slash
            proxy_redirect off;
    
            # Socket.IO Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
    

    Der Ganze http Verkehr wird nach https umgeleitet.

    Als allererstes strippen wir www aus dem Namen.

    if ($host != 'frank-mankel.org' ) {
     rewrite ^/(.*)$ http://frank-mankel.org/$1 permanent;
    }
    

    Der Rest entspricht der nginx Doku!

    Jetzt bauen wir das Zertifikat ein. Pfade anpassen.

    # change these paths!
        ssl_certificate /etc/letsencrypt/live/frank-mankel.org/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/frank-mankel.org/privkey.pem;
    

    Danach speichern und nginx wieder starten

    /etc/init.d/nginx start  
    

    Alles Testen und schauen ob alles funktioniert.

    Zertifikat erneuern

    Das Let's Encrypt Zertifikat läuft nur 90 Tage, danach muss es erneuert werden!

    Also legen wir uns einen crontab an

    crontab -e
    

    Wir fügen folgende Zeile hinzu.

     * 3  1 * * certbot -q renew
    

    Das war mein erster Versuch, das gibt aber einen Fehler. So lange nginx läuft, geht das nicht. Aber dafür kann man dem certbot Befehle mitgeben um nginx zu stoppen und zu starten. Das sieht dann so aus.

    * 3  1 * * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
    

    Eine erfolgreiche Zertifikatsverlängerung sieht dann so aus.

    certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    
    -------------------------------------------------------------------------------
    Processing /etc/letsencrypt/renewal/frank-mankel.org.conf
    -------------------------------------------------------------------------------
    Attempting to parse the version 0.23.0 renewal configuration file found at /etc/letsencrypt/renewal/frank-mankel.org.conf with version 0.10.2 of Certbot. This might not work.
    Cert is due for renewal, auto-renewing...
    Running pre-hook command: service nginx stop
    Renewing an existing certificate
    Performing the following challenges:
    tls-sni-01 challenge for frank-mankel.org
    tls-sni-01 challenge for www.frank-mankel.org
    Waiting for verification...
    Cleaning up challenges
    Generating key (2048 bits): /etc/letsencrypt/keys/0004_key-certbot.pem
    Creating CSR: /etc/letsencrypt/csr/0004_csr-certbot.pem
    
    -------------------------------------------------------------------------------
    new certificate deployed without reload, fullchain is
    /etc/letsencrypt/live/frank-mankel.org/fullchain.pem
    -------------------------------------------------------------------------------
    
    Congratulations, all renewals succeeded. The following certs have been renewed:
      /etc/letsencrypt/live/frank-mankel.org/fullchain.pem (success)
    Running post-hook command: service nginx start
    

    Erledigt 🙂

    Vielen Dank für eine tolle Anleitung zum Thema! Quelle: https://willy-tech.de/ssl-zertifikat-mit-lets-encrypt-erstellen/

  • Ich will das Ganze um eine Subdomain erweitern

    root@one /opt/letsencrypt # letsencrypt certonly --standalone -d frank-mankel.org -d www.frank-mankel.org -d forum.frank-mankel.org 
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Plugins selected: Authenticator standalone, Installer None
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    You have an existing certificate that contains a portion of the domains you
    requested (ref: /etc/letsencrypt/renewal/frank-mankel.org.conf)
    
    It contains these names: frank-mankel.org, www.frank-mankel.org
    
    You requested these names for the new certificate: frank-mankel.org,
    www.frank-mankel.org, forum.frank-mankel.org.
    
    Do you want to expand and replace this existing certificate with the new
    certificate?
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (E)xpand/(C)ancel: E
    Renewing an existing certificate
    Performing the following challenges:
    http-01 challenge for forum.frank-mankel.org
    tls-sni-01 challenge for frank-mankel.org
    tls-sni-01 challenge for www.frank-mankel.org
    Waiting for verification...
    Cleaning up challenges
    
    IMPORTANT NOTES:
     - Congratulations! Your certificate and chain have been saved at:
       /etc/letsencrypt/live/frank-mankel.org/fullchain.pem
       Your key file has been saved at:
       /etc/letsencrypt/live/frank-mankel.org/privkey.pem
       Your cert will expire on 2018-10-17. To obtain a new or tweaked
       version of this certificate in the future, simply run
       letsencrypt-auto again. To non-interactively renew *all* of your
       certificates, run "letsencrypt-auto renew"
     - If you like Certbot, please consider supporting our work by:
    
       Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
       Donating to EFF:                    https://eff.org/donate-le
    
  • Wenn ihr alles richtig gemacht habt, dann könnt ihr Euer Zertifikat überprüfen lassen. Sollte dann so aussehen.

    0_1538314120455_index.jpeg

  • FrankMF FrankM hat am auf dieses Thema verwiesen

  • Let's Encrypt - acme.sh

    Verschoben Let's Encrypt
    6
    0 Stimmen
    6 Beiträge
    205 Aufrufe
    FrankMF

    Der Monat ist um, es war Zertifikatsmonat. Und nichts lief mehr..... 😞

    Was war passiert?

    Sonntags mache ich von meinem Haupt-PC ein Backup (per Hand) mittels Restic auf meinen Rest-Server. Doch ich bekam eine Fehlermeldung, blabla Zertifikat usw.

    Ok, ab auf den Server und mit der Fehlersuche gestartet. Das Zertifikat war erneuert worden, aber der Restart Command versuchte immer eine server.service zu starten, die es gar nicht gab!?

    Da musste ich doch beim @Nico mal kurz nachfragen. Und das kam dann dabei raus.

    Fehlerursache

    Der ReloadCmd versuchte einen server.service zu restarten, den es gar nicht gibt.

    Suche

    Im acme Pfad liegen die Ordner für die Domains. In diesem Ordner liegt eine Datei DOMAIN.conf

    In dieser Datei werden bei der Installation des Zertfikiates eine Reihe von Dingen eingetragen.

    Le_Domain='DOMAIN' Le_Alt='no' Le_Webroot='no' Le_PreHook='' Le_PostHook='' Le_RenewHook='' Le_API='https://acme-v02.api.letsencrypt.org/directory' Le_Keylength='2048' Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/<ID>' Le_LinkOrder='https://acme-v02.api.letsencrypt.org/acme/order/<ID>' Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/>ID>' Le_CertCreateTime='1680440374' Le_CertCreateTimeStr='2023-04-02T12:59:34Z' Le_NextRenewTimeStr='2023-05-31T12:59:34Z' Le_NextRenewTime='1685537974' Le_RealCertPath='/mnt/rest-server/DOMAIN/cert.pem' Le_RealCACertPath='' Le_RealKeyPath='/mnt/rest-server/DOMAIN/key.pem' Le_ReloadCmd='__ACME_BASE64__START_c3lzdGVtY3RsIHJlc3RhcnQgc2VydmVyLnNlcnZpY2U=__ACME_BASE64__END_' Le_RealFullChainPath='/mnt/rest-server/DOMAIN/fullchain.pem'

    Ok, da ist der ReloadCmd, aber der ist base64 kodiert!? Was machen.

    # echo c3lzdGVtY3RsIHJlc3RhcnQgc2VydmVyLnNlcnZpY2U= | base64 -d systemctl restart server.service

    Ok, hier sehen wir die fehlerhafte Eintragung, die genau meinem Beispiel oben entspricht (unter Installation Zertifikat) Man könnte jetzt die Installation des Zertifikates mit dem korrigierten EIntrag durchführen, oder diese Base64 Zeile korrigieren. Ok, wie geht das?

    # echo systemctl restart rest-server.service | base64 c3lzdGVtY3RsIHJlc3RhcnQgcmVzdC1zZXJ2ZXIuc2VydmljZQo=

    Diese Ausgabe kopieren wir dann in die Konfigurationsdatei. Kurze Kontrolle

    # echo c3lzdGVtY3RsIHJlc3RhcnQgcmVzdC1zZXJ2ZXIuc2VydmljZQo= | base64 -d systemctl restart rest-server.service

    Passt 😊 Und wieder jede Menge gelernt. Danke @Nico

  • 0 Stimmen
    1 Beiträge
    159 Aufrufe
    Niemand hat geantwortet
  • Linux Mint Cinnamon 20.2 "Uma" released

    Linux
    3
    0 Stimmen
    3 Beiträge
    234 Aufrufe
    FrankMF

    Was noch gestört hatte, war der Scrollbalken im FF. Der war zu schmal, konnte man schlecht erwischen.

    8e403120-11e2-413f-a479-0ebc3002e6d4-grafik.png

    Quelle: https://forums.linuxmint.com/viewtopic.php?f=47&t=330849&sid=1c7c71850931d5c34d8a0dd41ff57679

  • NanoPi R2S - OpenWRT

    Verschoben NanoPi R2S
    6
    0 Stimmen
    6 Beiträge
    517 Aufrufe
    FrankMF

    @thrakath1980 Ich wollte noch auf ein Thema zurück kommen. Das Original OpenWRT auf dem R2S ist ja ein Snapshot. Den kann man ohne Probleme aktualisieren. Unten ist dann ein Haken mit "Keep settings...."

    Gerade probiert, ging einwandfrei. Netzwerkeinstellungen und Firewall Settings blieben erhalten.

  • Wenn dir der Redis-Server flöten geht....

    Verschoben Redis
    3
    0 Stimmen
    3 Beiträge
    519 Aufrufe
    FrankMF

    So, nach einer kleinen Pause und ein wenig nachdenken ist mir doch noch was eingefallen 😉

    Backports! Man so einfach!

    nano /etc/apt/sources.list

    Das folgende eintragen.

    # backports deb http://deb.debian.org/debian stretch-backports main

    Danach ein

    apt update

    Und dann schauen wir uns mal die Version an....

    apt -t stretch-backports search redis-server Sorting... Done Full Text Search... Done golang-github-stvp-tempredis-dev/stretch-backports 0.0~git20160122.0.83f7aae-1~bpo9+1 all Go package to start and stop temporary redis-server processes libtest-redisserver-perl/oldstable,oldstable 0.20-1 all redis-server runner for tests python-hiredis/oldstable,oldstable 0.2.0-1+b2 amd64 redis protocol reader for Python 2.X using hiredis python3-hiredis/oldstable,oldstable 0.2.0-1+b2 amd64 redis protocol reader for Python using hiredis redis/stretch-backports 5:5.0.3-3~bpo9+2 all Persistent key-value database with network interface (metapackage) redis-server/stretch-backports 5:5.0.3-3~bpo9+2 amd64 [residual-config] Persistent key-value database with network interface

    Und die habe ich gestern Abend gebaut.

    127.0.0.1:6379> INFO # Server redis_version:5.0.5

    Ok, das schmerzt jetzt 😛

  • checkmk - Agent installieren

    Verschoben checkmk
    1
    0 Stimmen
    1 Beiträge
    2k Aufrufe
    Niemand hat geantwortet
  • NAS - Cups & Sane

    Linux
    1
    0 Stimmen
    1 Beiträge
    468 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    1 Beiträge
    773 Aufrufe
    Niemand hat geantwortet