Erstellen von let’s encrypt wildcard Zertifikaten
In diesem Blog Post schrieb ich bereits etwas über die Verwendung von let’s encrypt Zertifikaten für lokale IP Adressen.
Seit kurzem unterstützt let’s encrypt nun auf das Ausstellen von wildcard SSL Zertifikaten (*.example.com).
Da ich auf meiner lokalen Gitlab Umgebung das Zertifikat eh erneuern muss und ich in Zukunft wildcard Zertifikate durchaus benötigen werden (Kubernetes/Openshift), bietet es sich an, sich mit dem Request von wildcard Zertifikaten zu befassen.
Ein kleiner Spoiler: Aktuell wird der http-01 ACME challenge
challenge mode in Zusammenspiel mit wildcard Zertifikaten noch nicht unterstützt. Es muss hier zwangsweise die dns-01 ACME challenge
verwendet werden. Hierzu muss auf dem, der Domain zugeordneten, DNS Server ein bestimmter Text Eintrag erstellt werden (siehe oben verlinkten Post). Da dies für interne IP Adressen aber sowieso notwendig ist, macht das im aktuellen Use-Case keine Probleme.
ist Zustand
Bisher wurde das Zertifikat für den Knoten für drei domains requested:
certbot –expand –agree-tos –email philipp@haussleiter.de -d gitlab.smartos.p22.de -d mattermost.smartos.p22.de -d plantuml.smartos.p22.de –manual –preferred-challenges dns certonly
Neben Gitlab läuft hier eine Mattermost Instanz, als auch ein Plantuml Server. Die chellenge ist – wie bereits oben erwähnt – dns-01 ACME challenge
.
Das Resultat ist dann folgendes Zertifikat:
openssl x509 -inform pem -in cert.pem -noout -text
Certificate: Data: Version: 3 (0x2) Serial Number: 03:16:9e:7e:a3:a3:d0:78:bb:a5:1f:c2:82:7e:fc:13:ee:c2 Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3 Validity Not Before: Nov 24 16:32:33 2017 GMT Not After : Feb 22 16:32:33 2018 GMT Subject: CN=gitlab.smartos.p22.de Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:cf:c0:56:68:3c:a3:1a:46:76:5f:8c:7c:52:94: … da:47 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication X509v3 Basic Constraints: critical CA:FALSE X509v3 Subject Key Identifier: 6C:21:00:07:4E:BA:DA:E5:69:F4:AC:61:4F:FB:EE:D5:02:6E:DC:E0 X509v3 Authority Key Identifier: keyid:A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1 Authority Information Access: OCSP - URI:http://ocsp.int-x3.letsencrypt.org CA Issuers - URI:http://cert.int-x3.letsencrypt.org/ X509v3 Subject Alternative Name: DNS:gitlab.smartos.p22.de, DNS:mattermost.smartos.p22.de, DNS:plantuml.smartos.p22.de X509v3 Certificate Policies: Policy: 2.23.140.1.2.1 Policy: 1.3.6.1.4.1.44947.1.1.1 CPS: http://cps.letsencrypt.org User Notice: Explicit Text: This Certificate may only be relied upon by Relying Parties and only in accordance with the Certificate Policy found at https://letsencrypt.org/repository/ Signature Algorithm: sha256WithRSAEncryption 1f:6b:14:8c:04:10:5a:c7:ae:be:6b:4e:fb:26:90:0c:4a:d5: … cc:05:4a:f8
soll Zustand
Ändern wir nun die Abfrage auf:
certbot –expand –agree-tos –email philipp@haussleiter.de -d *.smartos.p22.de –manual –preferred-challenges dns certonly
erhalten wird den Fehler The currently selected ACME CA endpoint does not support issuing wildcard certificates.
Aktuell ist der neue ACME CA Endpoint noch nicht als default im certbot
client eingestellt. Wir können den Endpoint aber direkt übergeben:
certbot –server https://acme-v02.api.letsencrypt.org/directory –expand –agree-tos –email philipp@haussleiter.de -d *.smartos.p22.de –manual –preferred-challenges dns certonly
Dies führt zum bekannten Ablauf der dns-01 ACME challenge
:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org ------------------------------------------------------------------------------- Would you be willing 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 EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: Y Starting new HTTPS connection (1): supporters.eff.org Obtaining a new certificate Performing the following challenges: dns-01 challenge for smartos.p22.de ------------------------------------------------------------------------------- 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 ------------------------------------------------------------------------------- Please deploy a DNS TXT record under the name _acme-challenge.smartos.p22.de with the following value: fTk…lo Before continuing, verify the record is deployed. ------------------------------------------------------------------------------- Press Enter to Continue Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/smartos.p22.de/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/smartos.p22.de/privkey.pem Your cert will expire on 2018-06-15. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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
Wichtig ist, dass das neue Zertifikat nun unter einem andere Pfad liegt: /etc/letsencrypt/live/gitlab.smartos.p22.de
Ein kurzer Check zeigt, dass wir nun ein wildcard Zertifikat verwenden:
openssl x509 -inform pem -in cert.pem -noout -text
Certificate: Data: Version: 3 (0x2) Serial Number: 03:6a:c6:55:60:7b:0f:85:64:40:e8:0f:2f:3c:a4:27:1b:27 Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3 Validity Not Before: Mar 17 12:48:43 2018 GMT Not After : Jun 15 12:48:43 2018 GMT Subject: CN=*.smartos.p22.de Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:b7:c0:b3:e6:16:58:6f:79:d1:f2:42:6e:0a:a7: … 5b:95 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication X509v3 Basic Constraints: critical CA:FALSE X509v3 Subject Key Identifier: 06:EF:F6:40:A2:1F:EE:A7:59:03:7D:67:5C:F9:A2:E2:A4:C1:D6:76 X509v3 Authority Key Identifier: keyid:A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1 Authority Information Access: OCSP - URI:http://ocsp.int-x3.letsencrypt.org CA Issuers - URI:http://cert.int-x3.letsencrypt.org/ X509v3 Subject Alternative Name: DNS:*.smartos.p22.de X509v3 Certificate Policies: Policy: 2.23.140.1.2.1 Policy: 1.3.6.1.4.1.44947.1.1.1 CPS: http://cps.letsencrypt.org User Notice: Explicit Text: This Certificate may only be relied upon by Relying Parties and only in accordance with the Certificate Policy found at https://letsencrypt.org/repository/ Signature Algorithm: sha256WithRSAEncryption 27:6d:e4:be:e7:5d:73:7d:bd:dc:b6:25:cc:c8:5f:9c:0f:86: … d8:57:1d:de