skip to content
Proell Expert
Hallo und herzlich Wilkommen!

Hier bei Proell.expert finden Sie Ihren Experten!

Let's encrypt ermöglicht kostenfreie Zertifikate - allerdings nur mit einer Laufzeit von 3 Monaten.

Da ich bevorzugt mit der Konsole arbeite hab ich mir das acme.sh-Skript heruntergeladen und installiert. Dieses ist sehr einfach gehalten und man kann mit ein paar Kommandos entsprechend die Zertifikate erzeugen bzw. erneuern.

Zunächsteinmal die Installation:

curl https://get.acme.sh | sh -s email=my[at]example[dot]com

Das installiert das acme.sh im Heimatverzeichnis des Users unter .acme.sh

Dann beantragt man ein Zertifikat wie folgt:

./acme.sh --issue -d <domain> -d <www.domain> -d <optional weitere Domains> --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

Mit dem Parameter --dns wird angegeben, dass man über entsprechende DNS-Einträge nachweist, dass man rechmtässiger Eigenümer der Domäne ist. Selbes gibt es für Web.

Mit dem Aufruf erhält man dann beispielsweise:

[Di 7. Sep 16:52:09 CEST 2021] Using CA: https://acme.zerossl.com/v2/DV90
[Di 7. Sep 16:52:09 CEST 2021] Creating domain key
[Di 7. Sep 16:52:09 CEST 2021] The domain key is here: /root/.acme.sh/<...>
[Di 7. Sep 16:52:09 CEST 2021] Multi domain='DNS:<...>,DNS:<...>,DNS:<...>'
[Di 7. Sep 16:52:09 CEST 2021] Getting domain auth token for each domain
[Di 7. Sep 16:52:14 CEST 2021] Getting webroot for domain=<...>'
[Di 7. Sep 16:52:14 CEST 2021] Getting webroot for domain='www.<...>'
[Di 7. Sep 16:52:14 CEST 2021] Getting webroot for domain='www2.<...>'
[Di 7. Sep 16:52:14 CEST 2021] Add the following TXT record:
[Di 7. Sep 16:52:14 CEST 2021] Domain: '_acme-challenge.<...>'
[Di 7. Sep 16:52:14 CEST 2021] TXT value: 'NuD93ezdFVYJsQ2L6EemtZN3h675qrgYclxrdFYVuuE'
[Di 7. Sep 16:52:14 CEST 2021] Please be aware that you prepend _acme-challenge. before your domain
[Di 7. Sep 16:52:14 CEST 2021] so the resulting subdomain will be: _acme-challenge.<...>
[Di 7. Sep 16:52:14 CEST 2021] Add the following TXT record:
[Di 7. Sep 16:52:14 CEST 2021] Domain: '_acme-challenge.<...>'
[Di 7. Sep 16:52:14 CEST 2021] TXT value: 'i_eAM3ingm3i2ES-YGibyICVmfOhrZL57g8vbHzwutc'
[Di 7. Sep 16:52:14 CEST 2021] Please be aware that you prepend _acme-challenge. before your domain
[Di 7. Sep 16:52:14 CEST 2021] so the resulting subdomain will be: _acme-challenge.www.<...>
[Di 7. Sep 16:52:14 CEST 2021] Add the following TXT record:
[Di 7. Sep 16:52:14 CEST 2021] Domain: '_acme-challenge.www2.<...>'
[Di 7. Sep 16:52:14 CEST 2021] TXT value: '_IQ3GsPz4n6v-pW7b6IP9uc4AQLXMV86lm6tsPrMRA8'
[Di 7. Sep 16:52:14 CEST 2021] Please be aware that you prepend _acme-challenge. before your domain
[Di 7. Sep 16:52:14 CEST 2021] so the resulting subdomain will be: _acme-challenge.www2.<...>
[Di 7. Sep 16:52:14 CEST 2021] Please add the TXT records to the domains, and re-run with --renew.
[Di 7. Sep 16:52:14 CEST 2021] Please add '--debug' or '--log' to check more details.
[Di 7. Sep 16:52:14 CEST 2021] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh

Dann muss man entsprechend die Einträge beim DNS-Anbieter oder im eigenen DNS entsprechend hinterlegen und warten, bis sich das im DNS "herumgesprochen" hat. Prüfen kann man das mit folgender Abfrage:

 nslookup -q=TXT _acme-challenge.www.<...>

Sobald die korrigierten Texteinträge ausgeliefert werden kann man mit folgendem Request das Zertifikat sich generieren lassen:

 ./acme.sh --renew -d proell.biz -d www.proell.biz -d www2.proell.biz --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

Als Ergebnis erhält man folgende Ausgabe

[Di 7. Sep 16:37:07 CEST 2021] Renew: '<DOMAIN>'
[Di 7. Sep 16:37:07 CEST 2021] Sleep 10 and retry.
[Di 7. Sep 16:37:19 CEST 2021] Sleep 10 and retry.
[Di 7. Sep 16:37:31 CEST 2021] Using CA: https://acme.zerossl.com/v2/DV90
[Di 7. Sep 16:37:32 CEST 2021] Multi domain='DNS:<DOMAIN>,DNS:www.<DOMAIN>,DNS:www2.<DOMAIN>'
[Di 7. Sep 16:37:32 CEST 2021] Getting domain auth token for each domain
[Di 7. Sep 16:37:32 CEST 2021] Verifying: <DOMAIN>
[Di 7. Sep 16:37:33 CEST 2021] Processing, The CA is processing your order, please just wait. (1/30)
[Di 7. Sep 16:37:36 CEST 2021] Success
[Di 7. Sep 16:37:36 CEST 2021] Verifying: www.<DOMAIN>
[Di 7. Sep 16:37:37 CEST 2021] Processing, The CA is processing your order, please just wait. (1/30)
[Di 7. Sep 16:37:40 CEST 2021] Success
[Di 7. Sep 16:37:40 CEST 2021] Verifying: www2.<DOMAIN>
[Di 7. Sep 16:37:41 CEST 2021] Processing, The CA is processing your order, please just wait. (1/30)
[Di 7. Sep 16:37:44 CEST 2021] Success
[Di 7. Sep 16:37:44 CEST 2021] Verify finished, start to sign.
[Di 7. Sep 16:37:44 CEST 2021] Lets finalize the order.
[Di 7. Sep 16:37:44 CEST 2021] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/IBz77IFJd57nucE1vp6ImA/finalize'
[Di 7. Sep 16:37:46 CEST 2021] Order status is processing, lets sleep and retry.
[Di 7. Sep 16:37:46 CEST 2021] Retry after: 15
[Di 7. Sep 16:38:02 CEST 2021] Polling order status: https://acme.zerossl.com/v2/DV90/order/IBz77IFJd57nucE1vp6ImA
[Di 7. Sep 16:38:03 CEST 2021] Downloading cert.
[Di 7. Sep 16:38:03 CEST 2021] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/4rc57kpAJ9fO9PNV8MY3Fg'
[Di 7. Sep 16:38:04 CEST 2021] Cert success.
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
[Di 7. Sep 16:38:04 CEST 2021] Your cert is in: /root/.acme.sh/<DOMAIN>/<DOMAIN>.cer
[Di 7. Sep 16:38:04 CEST 2021] Your cert key is in: /root/.acme.sh/<DOMAIN>/<DOMAIN>.key
[Di 7. Sep 16:38:04 CEST 2021] The intermediate CA cert is in: /root/.acme.sh<DOMAIN>z/ca.cer
[Di 7. Sep 16:38:04 CEST 2021] And the full chain certs is there: /root/.acme.sh/<DOMAIN>/fullchain.cer

Dann müssen nur noch die Zertifikate und der private Key an die Stelle kopiert werden, wo der Webserver diese auch erwartet. Für das Zertifikat ist es häufig am Besten, wenn man gleich die Zertifikatskette verwendet.

Webserver neu starten und testen. Das sollte es gewesen sein.

 

Mehr Infos ggf. unter:
https://gist.github.com/ammgws/381b4d9104c4e2b43b9210f33f03a15a

 

up