Verified Commit 864b8c8c authored by Benedikt's avatar Benedikt
Browse files

update X509 Cert post

parent ba935e62
Loading
Loading
Loading
Loading
−352 KiB (97.4 KiB)
Loading image diff...
+87 −71
Original line number Diff line number Diff line
@@ -57,52 +57,85 @@ cd ~/certs

Im nächsten Schritt erstellen wir den privaten Schlüssel für unsere Root-CA:

entweder einen RSA Schlüssel:
```bash
openssl genrsa -out myCA.key 2048
```

Anschließend erstellen wir ein selbst signiertes Root-CA Zertifikat:

oder einen modernen EC Schlüssel:
```bash
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.crt
openssl ecparam -genkey -name prime256v1 -out myCA.key
```

OpenSSL fragt uns jetzt nach den sogenannten **Distinguished Name (DN)**-Feldern.
Das sind Angaben, die später ins Zertifikat geschrieben werden. 
Die meisten Felder kann man leer lassen, aber **Common Name (CN)** sollte ausgefüllt werden.
{% component "Achtung", "error" %}
Den privaten Schlüssel (myCA.key) niemals weitergeben oder öffentlich ablegen - er ist der wichtigste Teil der CA.
{% endcomponent %}

{% hint "Fragen" %}
<br>

Dann schreiben wir eine kleine Konfig Datei, welche die wichtigsten Informationen über das zu erstellende Zertifikat enthält:
```bash
nano myCA.conf
```
{% hint "myCA.conf" %}
```bash
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DarkMatterBytes
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:DarkMatterBytes Root CA
Email Address []:.
# =========================================
# OpenSSL Self Signed Root CA Configuration
# =========================================

[ req ]
default_md          = sha256     # Default message digest
distinguished_name  = req_dn     # Default DN template
string_mask         = utf8only   # UTF-8 encoding
prompt              = no         # Non-interactive mode
x509_extensions     = v3_x509    # when req -x509 is in use

[ req_dn ]
C                         = DE
# ST                        = Rheinland Pfalz
# L                         = Mainz
O                         = Meine fiktive Organisation
# OU                        = Certificate Authority
CN                        = My Root CA

# Das gleiche, nur mit langen Key-Namen
# [ req_dn ]
# countryName               = DE
# stateOrProvinceName       = Rheinland Pfalz
# localityName              = Mainz
# organizationName          = Meine fiktive Organisation
# organizationalUnitName    = Certificate Authority
# commonName                = My Root CA

[ v3_x509 ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, keyCertSign
```
{% endhint %}

Es reicht, hier lediglich Country Name (DE), Organization Name (DarkmatterBytes)
und den Common Name (DarkMatterBytes Root CA) auszufüllen.
Alles andere können wir mit einem Punkt beantworten, dadurch bleibt das entsprechende Feld leer.
<br>

Jetzt können wir das selbstsignierte Zertifikat erstellen:

Jetzt haben wir zwei Dateien:
```bash
openssl req -new -x509 -config myCA.conf -key myCA.key -days 1825 -out myCA.crt
```

Wir haben jetzt drei Dateien:

```bash
root@debian-vm:~/certs# ls -l
insgesamt 8
-rw-r--r-- 1 root root 1257 12. Aug 14:57 myCA.crt
-rw------- 1 root root 1704 12. Aug 14:56 myCA.key
insgesamt 12
-rw-r--r-- 1 root root 1184 12. Aug 14:56 myCA.conf
-rw-r--r-- 1 root root  737 12. Aug 14:57 myCA.crt
-rw------- 1 root root  302 12. Aug 14:55 myCA.key
```

{% component "Achtung", "error" %}
Den privaten Schlüssel (myCA.key) niemals weitergeben oder öffentlich ablegen - er ist der wichtigste Teil der CA.
{% endcomponent %}

<br>

Wir können jetzt das Root-CA Zertifikat überprüfen:
Wir prüfen das Root-CA Zertifikat:

```bash
openssl x509 -in myCA.crt -noout -text 
@@ -113,60 +146,39 @@ Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            29:25:51:47:39:bd:07:db:fb:17:5c:7b:8e:00:3f:19:31:38:0a:a3
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = DE, O = DarkMatterBytes, CN = DarkMatterBytes Root CA
            7d:15:98:b4:b6:78:6e:d0:07:88:fe:d5:83:6d:21:fc:e6:04:6e:8a
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: C = DE, O = Meine fiktive Organisation, CN = My Root CA
        Validity
            Not Before: Aug 12 12:57:25 2025 GMT
            Not After : Aug 11 12:57:25 2030 GMT
        Subject: C = DE, O = DarkMatterBytes, CN = DarkMatterBytes Root CA
            Not After : Feb  1 12:57:25 2031 GMT
        Subject: C = DE, O = Meine fiktive Organisation, CN = My Root CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ec:64:16:3d:b7:97:1a:10:2f:25:d9:d1:4b:e4:
                    74:34:23:43:3d:51:d1:5f:80:de:08:77:89:55:64:
                    fd:1d:74:0e:58:98:ab:81:f1:22:44:da:bb:fe:c7:
                    1e:e8:21:f4:6a:8e:dd:43:c2:71:47:9d:e7:0d:73:
                    16:7e:42:cf:ae:d2:ec:2e:57:60:55:c3:7c:2c:ad:
                    e2:1a:78:e5:2c:03:69:7c:37:3e:ec:40:59:46:0f:
                    b9:35:75:19:a3:e7:f0:ca:1b:e3:77:1b:37:a4:2e:
                    2c:85:9e:df:01:d9:14:d1:c3:44:a7:40:31:d6:3d:
                    df:1d:97:8d:3d:23:27:9f:d3:09:96:f8:09:cf:78:
                    60:df:cc:9f:cc:cd:40:0c:b1:bf:cc:fc:7d:bc:af:
                    26:46:55:91:1b:27:71:41:5c:33:73:56:f8:a4:f1:
                    57:32:cf:18:93:44:c1:51:0c:19:b7:d0:be:89:e6:
                    9b:22:7c:b6:14:77:8a:98:5c:01:0f:4a:8b:43:19:
                    f2:32:35:07:91:75:dd:ff:c3:a5:49:3e:a0:00:36:
                    d2:5f:83:87:85:45:55:ad:bb:13:91:70:b4:b6:5e:
                    cd:0d:d5:36:59:b5:a2:71:d1:2e:11:8d:7f:e4:ca:
                    55:48:11:a3:2b:99:81:ec:4f:16:ea:6e:60:6d:2d:
                    22:fb
                Exponent: 65537 (0x10001)
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:c9:f3:a9:ff:19:6c:dc:86:6f:5f:b6:a8:96:28:
                    24:2d:33:ba:97:17:e4:ea:94:1b:da:82:3d:ba:0e:
                    42:47:de:75:5c:25:85:48:70:98:fd:62:ec:57:47:
                    5c:0c:9a:cf:8c:10:51:e4:9f:2c:47:a2:1a:1f:1e:
                    27:79:26:41:46
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                44:F5:4B:2D:53:61:84:6F:67:63:1F:FE:7D:BC:4F:1C:31:82:B7:C5
                59:0D:28:CB:78:4A:42:33:E5:09:1B:6F:7C:9E:2D:2B:27:A1:B7:69
            X509v3 Authority Key Identifier:
                44:F5:4B:2D:53:61:84:6F:67:63:1F:FE:7D:BC:4F:1C:31:82:B7:C5
                59:0D:28:CB:78:4A:42:33:E5:09:1B:6F:7C:9E:2D:2B:27:A1:B7:69
            X509v3 Basic Constraints: critical
                CA:TRUE
    Signature Algorithm: sha256WithRSAEncryption
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        49:65:74:27:90:df:85:25:a3:f2:d6:ab:7c:86:65:a4:cf:4c:
        25:72:56:18:28:44:fe:1c:f8:7d:80:7d:68:b5:21:c7:56:83:
        fe:70:78:b3:c1:3c:32:a3:ee:95:01:a4:7e:be:ff:0a:34:e9:
        5a:ef:c1:ed:ed:dc:7d:69:46:3b:2a:b5:8f:8a:e2:2f:42:c8:
        24:92:d3:69:5f:80:74:94:67:5b:96:60:77:79:2b:07:8c:84:
        55:2d:6a:fe:ab:2d:e4:0c:48:b8:09:eb:c5:6e:34:69:6f:b8:
        57:dc:b3:05:fd:0d:ae:49:12:d6:42:17:ef:fd:a5:f2:6a:b0:
        a1:b8:c3:3c:34:a9:40:34:6d:98:2f:a8:81:9a:ab:17:b1:28:
        e9:e1:b2:8a:54:f5:6c:fe:59:cc:6c:21:9c:7d:3b:3e:23:69:
        79:5a:13:d5:0d:fb:9a:53:41:d7:c9:d2:ff:f6:53:51:44:e6:
        f4:19:4b:84:d7:1e:fc:e3:3c:70:0d:bd:bb:80:9b:ad:f1:5e:
        01:a8:8b:a7:ba:84:99:83:0b:4a:e2:b2:94:d0:8d:e7:b5:a2:
        f6:57:5c:a4:4c:ae:ee:d8:de:5d:7d:4b:ac:da:85:ce:3e:6e:
        1e:40:c8:d7:45:68:80:30:f6:6c:53:85:99:d8:e2:e9:28:17:
        69:38:8b:b1
        30:44:02:20:28:43:95:cc:9b:b5:fa:18:e4:8e:37:e1:83:39:
        c1:d1:66:c7:15:eb:f9:79:66:3b:aa:f6:35:dc:cf:64:4b:f5:
        02:20:75:ae:3e:6d:08:aa:25:83:b6:91:bf:2f:eb:9a:97:be:
        89:b5:12:a3:e5:1c:be:65:2d:fd:ea:c4:86:fa:4a:10
```
{% endhint %}

@@ -231,6 +243,10 @@ Wenn alles geklappt hat, ist unser Root-CA Zertifikat in der Liste zu sehen
Nun ist das Zertifikat im System installiert und wird z.B. vom Browser als gültiges Root-CA Zertifikat akzeptiert.
Über das gleiche Menü lässt sich das Zertifikat auch wieder deinstallieren.

Siehe:
- [https://docs.openssl.org/master/man1/openssl-req/](https://docs.openssl.org/master/man1/openssl-req/){target="_blank" rel="noopener noreferrer"}
- [https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/](https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/){target="_blank" rel="noopener noreferrer"}

## Root-CA Zertifikat verwenden

Im nächsten Post zeige ich, wie man mit dem eigenen Root-CA Zertifikat
+181 −129

File changed.

Preview size limit exceeded, changes collapsed.