Linuxmuster-renew-certs Verbesserungsvorschläge

Hallo Thomas,

zunächst mal vielen Dank für die deine Arbeit und die Umsetzung des Skripts. Wenn ich das Skript richtig gelesen habe, werden durch dieses Skript alle Zertifikate, also auch die CA, neu generiert. Kannst du evtl. noch Schalter einbauen, mit denen man auswählen kann, welche Zertifikate (z.B. nur Serverzertifikat) erneuert werden sollen?

Danke und viele Grüße

Thomas

Hallo Thomas,

eine weitere Sache die mir aufgefallen ist:

Durch das Skript wird zwar server.cert.pem aber nicht server.cert.bundle.pem erneuert.

Das wird aber hier:

verwendet.

Viele Grüße
Thomas

Hallo Thomas,

noch ein Thema: In den Zertifikatserweiterungen unter /etc/linuxmuster/ssl/server_cert_ext.cnf fehlt die Erweiterung der alternativen Namen (z.B. subjectAltName = IP:10.0.0.1, DNS:server.linuxmuster.lan, DNS:server).

Einige Webbrowser z.B. Firefox, qualifizieren das Zertifikat ohne diese Erweiterung als ungültig, selbst wenn die CA importiert ist (siehe SSL-Zertifikatsfehler bei selbst-signierten Zertifikaten trotz importierter CA).

Auch diese Datei wurde bei linuxmuster-renew-certs nicht neu geschrieben und wieder verwendet. Daher fehlen auch im neu generierten Zertifkat die Erweiterung der Alternaivnamen.

VG
Thomas

Hallo Thomas,

danke für deine Rückmeldungen.

Ich fürchte, wenn man nur das Serverzertifikat erneuert, funktioniert die Authentifizierung und das Kerberoslogin der Firewall gegen den Server nicht mehr.

server.cert.bundle.pem kann ich auch erneuern lassen, Zertifikatserweiterungen baue ich noch ein.

VG, Thomas

Hallo Thomas,

Ich fürchte, wenn man nur das Serverzertifikat erneuert, funktioniert die Authentifizierung und das Kerberoslogin der Firewall gegen den Server nicht mehr.

ich wüsste nicht warum…die signierende CA (und das ist die gegen die die Firewall prüft „Kenne ich die CA, aus der dieses Zertifikat stammt und vertraue ich der? Ja, kenne ich schon.“) bleibt doch auch dann auf Firewall und Server gleich, wenn du nur die Zertifikate erneuerst. Die CA muss man nur dann ersetzen, wenn diese selbst abläuft oder in irgendeiner Form kompromitiert wurde.

VG
Thomas

Hallo Thomas,

die Idee die dahinter steckt ist auch folgende:

Habe ich aus irgendwelchen Gründen die linuxmuster-CA auf meinen Clients eingespielt, z.B. wenn ich keine Warnmeldung beim Aufruf der Webseite der Schulkonsole haben will, muss ich jedesmal nach Durchlauf von linuxmuster-renew-certs auc die CA auf den Clients erneuen. Im Zweifel halt neues Image machen und da die neue CA einspielen.

Das wird insbesondere auch dann dumm, wenn ich den linuxmuster-Server auch als RADIUS-Server mit EAP-TLS-Auth (also zertifikatsbasierte Authentisierung) der Schulclients betreibe. Dann muss ich alle Geräte im MDM zurücksetzen, weil die Clients dann sagen „Meeep!! Die CA des Servers kenn ich aber nicht! Mit dem mag ich mich nicht verbinden!“ Heißt, du muss hier neue Client-Zertifikate machen, diese und das neue CA-Zert im MDM einspielen und die Geräte neu ausrollen.

Thema RADIUS: Ein weiterer Vorteil des Splittens wäre, dass man unterschiedliche Laufzeiten der Zertifikate haben könnte. Einige mobile Edgeräte (wieder die berühmten iPads) akzeptieren z.B. keine Server-Zertifikate deren Gültigkeit mehr als 730 Tage beträgt. Mit dem Schalter könnte man das dann selbst staffeln (CA 10 Jahre Gültig, Server- + Firewall-Zert 2 Jahre gültig). So könnte man über die gleiche CA Server- bzw. Firewall-Zertifikat viermal erneuern. Erst dann ist auch die CA tot und man muss alles neu machen.

Wenn du der Sache jetzt noch die Krone aufsetzen willst, passt du dein Skript so an, das aus der Devices.csv auch automatisch Client-Zertifikate generiert werden, die man bei Bedarf z.B. über die Schulkonsole als pfx exportieren kann (Obacht hierbei, der Export sollte im Legacy-Format vorgenommen werden. Per Default exportiert openssl die Zertifikate in einem Format, welches von einigen (leider auch wieder die berühmten ipads) mobilen Endgeräten nicht akzeptiert wird).

VG
Thomas

Meine Tests haben ergeben, dass wenn ich nur die Server-Zertifikate erneuere, die CA und die OPNsense Zertifikate unverändert lasse, ich einen SSL-Fehler auf der Firewall bekomme, wenn ich die Authentifzierung gegen den AD teste:

The following input errors were detected:

Authentication failed.
error: error:0A000086:SSL routines::certificate verify failed (unable to get local issuer certificate)
ldap_error: Can't contact LDAP server

VG, Thomas

Hallo Thomas,

das kann ich so nicht bestätigen.

Ich habe auf dem Server mit

openssl x509 -req -in server.csr -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out server.cert.pem -days 720 -sha256 -extfile server_cert_ext.cnf

ein neues Zertifikat generiert, Server und Firewall neu gestartet und das Ergebnis ist das:

openssl s_client -showcerts -connect server.linuxmuster.lan:636 | openssl x509 -text
depth=1 O = namegeändret, OU = LINUXMUSTER, CN = LINUXMUSTER.LAN, subjectAltName = LINUXMUSTER.LAN
verify return:1
depth=0 CN = server.linuxmuster.lan
verify return:1
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
46:a8:85:a7:98:15:81:7c:65:bc:a3:ca:82:a9:be:43:d7:b8:05:be
Signature Algorithm: sha256WithRSAEncryption
Issuer: O = namegeändert, OU = LINUXMUSTER, CN = LINUXMUSTER.LAN, subjectAltName = LINUXMUSTER.LAN
Validity
Not Before: Apr 2 10:04:38 2025 GMT
Not After : Mar 23 10:04:38 2027 GMT
Subject: CN = server.linuxmuster.lan
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:b0:33:44:d1:8d:aa:a8:76:40:c2:df:70:7a:14:
09:9a:c8:cd:d3:7d:a1:69:3b:21:e6:39:59:1f:95:
2c:77:fc:f8:9f:22:50:df:b2:aa:2d:56:5a:cf:59:
86:03:20:28:91:66:37:77:e1:ce:dc:27:5a:fc:a0:
a6:a5:79:03:f1:b6:ad:95:ca:8d:98:71:c7:3a:c9:
b4:2d:51:68:91:4f:2a:ec:bf:16:2f:97:2d:27:dd:
f1:bf:36:05:f7:1c:39:b0:c1:19:c8:67:0d:4d:81:
4e:97:8a:58:ab:53:26:85:6e:60:f7:91:1c:c4:06:
fd:c2:48:38:9e:72:86:ea:61:06:0f:c7:6d:3c:57:
86:f3:36:da:dc:1f:f1:25:de:b0:49:d0:30:71:f3:
1c:44:50:70:83:d6:1e:4b:b7:ef:f2:ae:ba:9e:24:
da:b0:bd:2f:33:10:3f:88:b9:11:bf:1c:5f:fb:05:
ff:a9:36:6b:d9:3f:17:51:15:b0:da:d5:0f:23:9d:
7c:be:0c:1f:05:ce:c5:94:4e:0f:5d:6f:27:65:93:
22:5c:eb:26:18:7e:ab:4c:d0:88:b6:07:cb:b7:76:
8d:1d:19:b1:bf:de:a8:8e:10:51:ca:2a:ec:c2:98:
c9:8b:87:1a:7c:e5:8f:e2:c0:ed:0e:f7:e7:2a:73:
24:0f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
Netscape Comment:
OpenSSL Generated Server Certificate
X509v3 Subject Key Identifier:
36:26:07:70:43:72:4C:AE:3A:E1:17:AB:DC:0C:61:7E:B7:94:08:87
X509v3 Authority Key Identifier:
keyid:F9:10:02:C3:A0:29:47:25:FD:D7:A7:61:B8:6A:88:B6:2F:8B:DE:C1
DirName:/O=namegändert/OU=LINUXMUSTER/CN=LINUXMUSTER.LAN/subjectAltName=LINUXMUSTER.LAN
serial:0F:C1:5E:93:60:89:F6:CE:98:41:35:99:FF:18:E1:20:75:69:7E:E9
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Alternative Name:
IP Address:10.0.0.1, DNS:server.linuxmuster.lan, DNS:server
Signature Algorithm: sha256WithRSAEncryption

VG
Thomas

Ok, muss ich mir nochmal anschauen. Wahrscheinlich liegt es daran, dass cacert.pem auch erneuert wurde.

VG, Thomas

Das wird erst in 7.3 kommen und hat i.M. keine Prio. Kannst dazu gerne einen Issue erstellen.

VG, Thomas