Loading src/assets/images/linux/screenshot_mmc_8.png −352 KiB (97.4 KiB) Loading image diff... src/posts/linux/sicherheit/tls/ca/root.md +87 −71 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 %} Loading Loading @@ -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 Loading src/posts/linux/sicherheit/tls/ca/server.md +181 −129 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
src/posts/linux/sicherheit/tls/ca/root.md +87 −71 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 %} Loading Loading @@ -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 Loading
src/posts/linux/sicherheit/tls/ca/server.md +181 −129 File changed.Preview size limit exceeded, changes collapsed. Show changes