Diese Verfahren bietet sich an, wenn Sie Let‘s-Encrypt-Zertifikate z.B. für Koadic auf einem lokalen Linux-PC (z.B mit Ubuntu) erstellen wollen, um diese dann später auf einen Server zu übertragen.
Ich gehen davon aus, dass Sie einen Domainnamen registriert haben, den Sie für diesen Vorgang nutzen können.
Schritt 1 – Let’s-Encrypt Installationsskripte laden
cd /opt
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
git clone https://github.com/Myria-de/get-letsencrypt-cert.git
cd get-letsencrypt-cert
Hier finden Sie ein Installationsskript getcert.sh, das Sie nach Ihren Wünschen im dafür vorgesehenen Abschnitt anpassen:
LEBIN=/opt/letsencrypt/letsencrypt-auto # hier ihr Let's Encrypt Installationsverzeichnis eintragen!
#########################
# passen Sie die folgenden Parameter an
country=DE # Ihr Land, beispielsweise DE
state="Germany" # Ihr Staat, beispielsweise Germany
town="Berlin" # Ihre Stadt beispielsweise Berlin
email=meine@domain.net # Ihre E-Mail-Adresse
DAYS_REMAINING=90 # Verbleibende Tage bis zur Erneuerung
#########################
Schritt 2 – Zertifikate erzeugen
Um die Zertifikate zu erzeugen, starten Sie das Skript. Fügen Sie dafür Ihre registrierte Domain als Option hinzu:
./getcert.sh linux-tip.eu
Nun ist eine wenig Handarbeit gefragt.
Neues Zertifikat erstellen
Generating a 4096 bit RSA private key
...........................................++
...........................++
writing new private key to 'certs/linux-tip.eu/privkey1.pem'
-----
Upgrading certbot-auto 0.35.1 to 0.36.0...
Replacing certbot-auto...
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Saving debug log to /opt/letsencrypt/get-letsencrypt-cert/letsencrypt/log/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Performing the following challenges:
http-01 challenge for linux-tip.eu
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.
Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:
hN8klSnokV03Zbo9P9KsZh3Q1mYbzBlz5Y87MKsoNZM.XPfqqc3NMS24xfgrXPoDlWi9wnt1NcP5tIQ7NiOxkA9
And make it available on your web server at this URL:
http://linux-tip.eu/.well-known/acme-challenge/iN8klSnokV03Zbo9P9KsZh3Q1mYbzBlz5Y87MKsoMZM
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Das Skript hält hier an und bittet Sie eine Datei auf Ihrem Webserver anzulegen. Wir gehen davon aus, dass die index-Datei index.html in Verzeichnis /var/www/html liegt. Führen Sie hier zum Erstellen folgende Befehle aus:
cd /var/www/html
mkdir .well-known
cd .well-known
mkdir acme-challenge
cd acme-challenge
echo "hN8klSnokV03Zbo9P9KsZh3Q1mYbzBlz5Y87MKsoNZM.XPfqqc3NMS24xfgrXPoDlWi9wnt1NcP5tIQ7NiOxkA9" > iN8klSnokV03Zbo9P9KsZh3Q1mYbzBlz5Y87MKsoMZM
Achtung: Hier wird also eine Datei mit Namen iN8klSnokV03Zbo9P9KsZh3Q1mYbzBlz5Y87MKsoMZM angelegt. Die als Inhalt die oben gezeigte Zeichenkette (unterhalb “Create a file containing just this data:” ) enthält. Die Daten können natürlich bei Ihnen variieren.
Bevor Sie das Skript mit “Press Enter to Continue” fortführen, prüfen Sie mittels eines Browser, ob tatsächlich der eben angelegte Content auf Ihrem Webserver erreichbar ist.
Falls dies nicht der Fall sein sollte, wird folgende Fehlermeldung ausgegeben:
Waiting for verification...
Challenge failed for domain linux-tip.eu
http-01 challenge for linux-tip.eu
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: linux-tip.eu
Type: unauthorized
Detail: Invalid response from
http://linux-tip.eu/.well-known/acme-challenge/iN8klSnokV03Zbo9P9KsZh3Q1mYbzBlz5Y87MKsoMZM
[2a04:d690:0:1765::1e]: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
2.0//EN\">\n<html><head>\n<title>404 Not
Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.
root@pentestit:/opt/letsencrypt/get-letsencrypt
In diesem Fall sollten Sie prüfen, ob ihr Webserver aktiv ist bzw. ob der dort hinterlegte Code mit dem im Skript generierten Inhalt übereinstimmt.
Ist alles korrekt verlaufen, so wird im aktuellen Verzeichnis ein Unterverzeichnis mit Muster Jahr-Datum-Uhrzeit, generiert, das die Zertifikate enthält. Der private Schlüssel wird im Verzeichnis certs/Domain abgelegt.
root@pentestit:/opt/letsencrypt/get-letsencrypt-cert# cd 2019-07-06-05-17-34/
root@pentestit:/opt/letsencrypt/get-letsencrypt-cert/2019-07-06-05-17-34# ls
0000_cert.pem 0000_chain.pem 0001_chain.pem
Schritt 3 – Koadic mit Zertifikat starten
Um Koadic mit den eben erstellten Zertifikaten zu starten, fügen Sie im autorun-Skript die Optionen CERTPATH und KEYPATH hinzu. Das fertige Skript könnte z.B. so aussehen:
# this is a comment
# you can invoke this file with: ./koadic --autorun autorun.example
set SRVHOST linux-tip.eu
set SRVPORT 443
set ENDPOINT eagle # this will be the URL: /eagle
set CERTPATH /opt/letsencrypt/get-letsencrypt-cert/2019-07-06-05-17-34/0001_chain.pem
set KEYPATH /opt/letsencrypt/get-letsencrypt-cert/certs/linux-tip.eu/privkey1.pem
run
Schritt 4 – Let’s-Encrypt Zertifikat erneuern
Da wir im Schritt 1 eine “Lebensdauer” des Zertifikates von 90 Tagen angegeben haben, müssen Sie die im Schritt 2 gezeigte Prozedur vor Ablauf dieser Frist wiederholen.
root@pentestit:/opt/letsencrypt/get-letsencrypt-cert# ./getcert.sh linux-tip.eu
Ausgabe-Verzeichnis certs/linux-tip.eu ist vorhanden.
Prüfe Zertifikate aus: ./certs
Zertifikat neu anfordern
Saving debug log to /opt/letsencrypt/get-letsencrypt-cert/letsencrypt/log/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Server issued certificate; certificate written to /opt/letsencrypt/get-letsencrypt-cert/0000_cert.pem
Cert chain written to <fdopen>
Cert chain written to <fdopen>
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/opt/letsencrypt/get-letsencrypt-cert/0001_chain.pem
Your cert will expire on 2019-10-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
Fertig.