feat(cert-manager): Hersteller-ZIP, PKCS#7, eingefügter Text, Analysieren und Aufteilen

- ZIP wird an den Anfangsbytes erkannt und mit Grenzen geöffnet (eine Ebene, Verhältnis, Gesamtgröße, verschlüsselte Einträge)
- PKCS#7 als PEM und DER, auch für EC, über den ASN.1-Lauf
- Eingefügter PEM-Text als eigener Eintrag im Reiter Dateien
- Neue Reiter Analysieren und Aufteilen auf dem gemeinsamen Arbeitsbereich

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-10-09 15:15:59 +02:00
parent 30118a2401
commit 1554ae83c1
22 changed files with 1692 additions and 60 deletions
+45 -2
View File
@@ -1254,6 +1254,8 @@
"tabs": {
"files": "Dateien",
"filesWithCount": "Dateien ({count})",
"analyze": "Analysieren",
"split": "Aufteilen",
"merge": "Zusammenführen"
},
"roles": {
@@ -1282,7 +1284,8 @@
"duplicate": "„{name}“ ist schon in der Liste.",
"tooMany": "„{name}“: die Liste ist mit {max} Dateien voll.",
"tooLarge": "„{name}“ ist größer als {size} MB.",
"totalTooLarge": "„{name}“: zusammen wären es mehr als {size} MB."
"totalTooLarge": "„{name}“: zusammen wären es mehr als {size} MB.",
"pasteTooLarge": "„{name}“ ist länger als {chars} Zeichen."
},
"ignored": {
"unknown": "Darin wurde kein Zertifikat erkannt.",
@@ -1294,7 +1297,13 @@
"zipTooLarge": "Das ZIP enthält zu viele Daten und wird nicht geöffnet.",
"tooManyEntries": "Das ZIP enthält zu viele Dateien und wird nicht geöffnet.",
"unsupportedKey": "Dieser Schlüsseltyp wird nicht unterstützt."
}
},
"pasteToggle": "PEM-Text einfügen",
"pasteHint": "Fügen Sie Text ein, der mit „-----BEGIN“ beginnt. Mehrere Blöcke hintereinander sind möglich.",
"pasteLabel": "Eingefügter PEM-Text",
"pasteAdd": "Hinzufügen",
"pastedLabel": "Eingefügter Text {n}",
"originPaste": "Eingefügter Text"
},
"errors": {
"generic": "Die Dateien konnten nicht geprüft werden. Bitte versuchen Sie es erneut.",
@@ -1318,6 +1327,40 @@
"goToFiles": "Zum Reiter „Dateien“",
"basis": "{count, plural, one {Grundlage: 1 Datei aus dem Reiter „Dateien“.} other {Grundlage: # Dateien aus dem Reiter „Dateien“.}}"
},
"analyze": {
"intro": "Alles, was in Ihren Dateien erkannt wurde: zuerst die Ketten, dann jedes Zertifikat im Einzelnen. Alle Zeiten stehen in UTC, wie im Zertifikat.",
"chainsTitle": "Ketten",
"certificatesTitle": "Zertifikate",
"ignoredTitle": "Nicht verwendet",
"nothingFound": "In den Dateien wurde noch kein Zertifikat erkannt.",
"issuer": "Ausgestellt von",
"validity": "Gültig",
"validRange": "{from} bis {to}",
"names": "Gilt für",
"key": "Schlüssel",
"keyRsa": "RSA, {bits} Bit",
"keyEc": "EC, Kurve {curve}",
"serial": "Seriennummer",
"sha256": "SHA-256",
"sha1": "SHA-1",
"source": "Gefunden in",
"valid": "Gültig",
"expired": "Abgelaufen",
"expiresSoon": "Läuft in {days} Tagen ab",
"explain": {
"end-entity": "Das eigentliche Zertifikat für Ihre Domain. Das gehört auf den Webserver.",
"intermediate": "Bestätigt Ihr Serverzertifikat gegenüber dem Browser. Wird zusammen mit dem Serverzertifikat eingespielt (Kette).",
"root": "Oberste Zertifizierungsstelle. Ist in Browsern und Betriebssystemen meist schon vorhanden."
}
},
"split": {
"intro": "Jedes erkannte Teil können Sie einzeln in seinem natürlichen Format herunterladen, oder alle zusammen als ZIP.",
"nothingFound": "Es wurde noch nichts erkannt, das sich herunterladen ließe.",
"download": "Herunterladen",
"downloadFor": "„{name}“ herunterladen",
"downloadAll": "Alle als ZIP herunterladen",
"zipFilename": "Zertifikate.zip"
},
"merge": {
"intro": "Tessera ordnet Serverzertifikat, Zwischenzertifikate und Stammzertifikat selbst und prüft dabei, dass jedes Zertifikat wirklich vom nächsten ausgestellt wurde. Die Reihenfolge Ihrer Dateien spielt keine Rolle.",
"noCertificates": "In den Dateien wurde noch kein Zertifikat erkannt. Fügen Sie im Reiter „Dateien“ ein Zertifikat hinzu.",