Links:
Let’s Encrypt
ACME Client Implementations
Certify SSL Manager manage free https certificates for IIS
certbot DOCs
How to stop using TLS-SNI-01 with Certbot
Automatically enable HTTPS on your website with EFF's Certbot, deploying Let's Encrypt certificates
Microsoft RDP mit Letsencrypt
Exchange mit Let’s Encrypt Teil1
Exchange mit Let’s Encrypt Teil2
SSL TestPages:
SSLLabs - SSL Server Test
https://observatory.mozilla.org/analyze.html?host=www.heise.de - Mozilla Sicherheitscheck für WebServer
Datei / Verzeichnis | Beschreibung |
---|---|
/etc/letsencrypt/ | Arbeitsverzeichnis für Zertifikate und Konfigurationsdateien |
/etc/letsencrypt/live/domain.tld/ | Link zu den aktuellen Zertifikaten |
/var/log/letsencrypt/letsencrypt.log | aktuelle LOG Datei |
/etc/letsencrypt/renewal/domain.tld.conf | certbot renew Steuerdatei |
Zertifikatsdateien | |
cert.pem | öffentliche Server Zertifikat |
chain.pem | Intermediate Zertifikat |
fullchain.pem | cert.pem + chain.pem |
privkey.pem | Privater Schlüssel |
Befehl | Beschreibung |
---|---|
certbot renew --force-renewal | Zertifikat manuell erneuern |
certbot renew --dry-run | Prüflauf, Zertifikatserneuerung aber ohne Änderungen am System |
- add-apt-repository
unter ubuntu 14.04 und debian installieren
apt-get install python-software-properties software-properties-common
- Let’s-Encrypt-Client laden und installieren
add-apt-repository ppa:certbot/certbot apt update apt install python-certbot-apache
- Let’s-Encrypt-Zertifikate für Apache installieren, mit diesem Befehl kann man auch das Zertifikat um weitere Domainname erweitern.
certbot --apache \ -d domain.tld \ -d www.domain.tld \ -d imap.domain.tld \ -d smtp.domain.tld
Parameter | Beschreibung |
---|---|
--staging | führt erst einen Probelauf durch, ist dieser erfolgreich, muss der Parameter entfernt werden. Zum Test wird ein Zertifikat von "Fake LE Intermediate X1" eingebunden |
-d | legt die Domain im Zertifikat fest |
--apache | PlugIn weiter ist noch --webroot, --nginx, --standalone, --manual möglich |
-m <eMail Adresse> | eMail, an die die Mail zum erneuern des Zertifikates geschickt wird |
certbot --help | certbot Hilfe anzeigen |
certbot revoke | Zertifikate wiederrufen |
-rsa-key-size 4096 | Key Länge festlegen |
service apache2 restart
- Zertifikate die in den nächsten 30 Tagen ablaufen automatisch erneuern
#!/bin/sh
# Datei /etc/cron.weekly/letsencrypt
certbot renew
Script ausführbar machen, wird ein mal die Woche ausgeführt
chmod a+x /etc/cron.weekly/letsencrypt
- wenn das Zertifikat noch in mehreren Diensten eingebunden ist, müssen diese nach den erneuern auch neu gestartet werden.
#!/bin/sh # Datei /etc/cron.weekly/letsencrypt certbot renew result=$(find /etc/letsencrypt/live/ -type l -mtime -1 ) if [ -n "$result" ]; then systemctl restart postfix.service systemctl restart kopano-gateway.service systemctl restart kopano-ical.service fi
- Let’s-Encrypt-Client laden und installieren
apt install certbot
Damit die Erstellung des Zertifikates funktioniert, muss Port 80 und 443 vom Internet auf das NAS geleitet werden.
Im DNS muss ein TXT Record für die Domain angelegt werden der ein Token enthält.
Parameter | Erläuterung |
---|---|
preferred-challenges dns | DNS-Challenge wählen |
manual | TXT Record wird manuell eingetragen |
certbot certonly --server https://acme-v02.api.letsencrypt.org/directory -d my.dyndns.de --email user@online.de --preferred-challenges dns --manual
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must agree in order to register with the ACME server. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: y - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: y Account registered. Requesting a certificate for my.dyndns.de - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name: _acme-challenge.my.dyndns.de. with the following value: ACpUBtphxihPeku2yG-UDQfZ1ohkmgOyWBdQSAgm28c Before continuing, verify the TXT record has been deployed. Depending on the DNS provider, this may take some time, from a few seconds to multiple minutes. You can check if it has finished deploying with aid of online tools, such as the Google Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.my.dyndns.de. Look for one or more bolded line(s) below the line ';ANSWER'. It should show the value(s) you've just added. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue Waiting for verification... Cleaning up challenges Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/my.dyndns.de/fullchain.pem Key is saved at: /etc/letsencrypt/livemy.dyndns.de/privkey.pem This certificate expires on 2023-12-06. These files will be updated when the certificate renews. NEXT STEPS: - This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date. Subscribe to the EFF mailing list (email: user@online.de). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Selfhost TXT Record anlegen
Subdomainname: _acme-challenge.my.dyndns.de
Verfallszeit (TTL) Sofort
Inhalt / Content: ACpUBtphxihPeku2yG-UDQfZ1ohkmgOyWBdQSAgm28c
- Testen des TXT Eintrages
nslookup -type=TXT _acme-challenge.my.dyndns.de 8.8.8.8
Für die Aktualisierung des Eintrages gibt es bei Selfhost auch eine API Schnittstelle.
Als erstes muss der TXT Record _acme-challenge.my.dyndns.de unter Domainverwaltung | Neue Subdomain/Neuen Record anlegen angelegt werden. Wenn man jetzt beim TXT-Record Ändern wählt, wird unter Subdomainname: _acme-challenge.my.dyndns.de (5182211) angezeigt. Die Nummer hinter dem Domainname ist die RecordID.
curl -X POST -F 'username=%USERNAME%' -F 'password=%PASSWORD%' -F 'rid=%RECORDID%' -F 'content=%CONTENT%' https://selfhost.de/cgi-bin/api.pl
oder
https://selfhost.de/cgi-bin/api.pl?username=<USERNAME>&password=<PASSWORD>&rid=%<RECORDID>&content=<CONTENT>
für das Beispiel wäre es der folgende Befehl
https://selfhost.de/cgi-bin/api.pl?username=483483&password=##Passwort##&rid=%5182211&content=ACpUBtphxihPeku2yG-UDQfZ1ohkmgOyWBdQSAgm28c
- Zertifikat Ausgabe testen
openssl s_client -connect domain.tld:443
- von allen Mail-Zertifikaten das Ablaufdatum ausgeben.
#!/bin/bash # # echo openssl s_client -connect mail.domain.tld:995 2>&- | if openssl x509 -enddate -noout then echo "POP3 Certificate is good for another day!" else echo "Certificate has expired or will do so within 24 hours!" echo "(or is invalid/not found)" fi echo echo openssl s_client -connect mail.domain.tld:993 2>&- | if openssl x509 -enddate -noout then echo "IMAP Certificate is good for another day!" else echo "Certificate has expired or will do so within 24 hours!" echo "(or is invalid/not found)" fi echo echo openssl s_client -starttls smtp -crlf -connect mail.domain.tld:587 2>&- | if openssl x509 -enddate -noout then echo "SMTP Certificate is good for another day!" else echo "Certificate has expired or will do so within 24 hours!" echo "(or is invalid/not found)" fi echo echo