Erstellen von let’s encrypt wildcard Zertifikaten

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

Philipp Haußleiter

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert