From 201765afd407a92058d098e11cd49b7168934e4b Mon Sep 17 00:00:00 2001 From: Schalli Date: Fri, 9 Oct 2026 17:34:48 +0200 Subject: [PATCH] refactor(cert-manager): einheitlicher Name Zertifikatsmanager Seitenleiste/Marktplatz (Seed), Seitentitel, Anleitungen, Kommentare und unveroeffentlichter CHANGELOG heissen jetzt Zertifikatsmanager. Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 13 +++++++------ apps/api/src/cert-manager/__fixtures__/README.md | 2 +- .../src/cert-manager/__fixtures__/make-fixtures.sh | 2 +- apps/api/src/cert-manager/cert-chain.ts | 2 +- apps/api/src/cert-manager/cert-csr.ts | 2 +- apps/api/src/cert-manager/cert-keys.ts | 2 +- apps/api/src/cert-manager/cert-manager.changelog.ts | 7 ++++++- .../api/src/cert-manager/cert-manager.controller.ts | 2 +- apps/api/src/cert-manager/cert-manager.seed.ts | 2 +- apps/api/src/cert-manager/cert-model.ts | 2 +- apps/api/src/cert-manager/cert-names.ts | 2 +- apps/api/src/cert-manager/cert-output.ts | 2 +- apps/api/src/cert-manager/cert-pkcs12.ts | 2 +- apps/api/src/cert-manager/cert-types.ts | 2 +- apps/api/src/cert-manager/zip-expand.ts | 2 +- apps/api/src/http-setup.ts | 4 ++-- apps/desktop/src-tauri/src/lib.rs | 2 +- .../app/(portal)/modules/cert-manager/actions.ts | 2 +- .../modules/cert-manager/cert-manager.test.tsx | 2 +- .../src/app/(portal)/modules/cert-manager/page.tsx | 2 +- .../(portal)/modules/cert-manager/working-set.ts | 2 +- .../src/components/accounting/file-drop-area.tsx | 2 +- apps/web/src/components/accounting/tab-bar.tsx | 2 +- apps/web/src/lib/accounting-request.ts | 2 +- apps/web/src/lib/download-base64.ts | 2 +- apps/web/src/messages/de.json | 2 +- apps/web/src/messages/umlaut-dictionary.ts | 2 +- docs/anleitung-anwender.md | 6 +++--- docs/anleitung-betrieb.md | 10 +++++----- docs/anleitung-entwicklung.md | 4 ++-- 30 files changed, 49 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index feae7c0..217c118 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,12 +19,13 @@ Diese Liste beschreibt in einfachen Worten, was sich von Version zu Version an T - Dateien, Hochladen und Herunterladen: Dateien und ganze Ordner per Ziehen und Ablegen (auch direkt auf einen Ordner) oder über „Hochladen“ hochladen; große Dateien gehen in Stücken hoch. Die Übertragungsleiste am unteren Rand zeigt den Fortschritt jeder Datei, lässt Abbrechen und Wiederholen zu und nennt Fehler in einfachen Worten. Tessera überschreibt nie stillschweigend: Gibt es den Namen schon, wählen Sie „Ersetzen“, „Beide behalten“ oder „Überspringen“. Dateien werden direkt heruntergeladen, Ordner und Mehrfachauswahl als ZIP-Datei. - Dateien, Teilen: Im Zeilenmenü einer Datei oder eines Ordners finden Sie jetzt „Teilen“. Dort suchen Sie Kolleginnen, Kollegen und Gruppen aus Ihrer Nextcloud und geben die Datei zum „Ansehen“ oder „Bearbeiten“ frei; die Berechtigung ändern Sie später, und eine Freigabe nehmen Sie mit „Entfernen“ wieder zurück. Außerdem erstellen Sie öffentliche Links mit „Ansehen“ oder „Bearbeiten“, bei Ordnern auch mit „Nur hochladen“, und kopieren sie mit „Link kopieren“. Passwort und Ablaufdatum richten sich nach den Regeln der Firmen-Nextcloud: Verlangt sie ein Passwort, fragt Tessera danach und kann auf Wunsch eines erzeugen. Tessera speichert das Passwort nie und zeigt es nur, solange der Dialog offen ist. Zum Schutz der Nextcloud legt Tessera höchstens 10 neue Freigaben innerhalb von 10 Minuten an. - Dateien, Übersicht der Freigaben: Die Reiter „Von mir geteilt“ und „Mit mir geteilt“ zeigen alle Freigaben auf einen Blick. Sie öffnen Einträge direkt im zugehörigen Ordner, ändern oder entfernen Ihre eigenen Freigaben, verlassen Freigaben anderer und nehmen offene Freigaben an oder lehnen sie ab. Geteilte Einträge sind in der Dateiliste markiert. Freigaben per E-Mail und an andere Server zeigt Tessera nicht an; sie bleiben der Nextcloud vorbehalten. -- Zertifikat-Manager, ein gemeinsamer Arbeitsbereich: Im ersten Reiter „Dateien“ laden Sie mehrere Dateien nacheinander oder auf einmal hoch, auch ZIP-Dateien vom Zertifikatsaussteller, und können PEM-Text einfügen. Jede Datei bleibt in der Liste, zu jeder steht, was Tessera darin erkannt hat; einzelne Dateien nehmen Sie mit ihrem eigenen Knopf wieder heraus. Passwörter geben Sie je Datei ein. Die Liste, Schlüssel und Passwörter bleiben nur in diesem Browserfenster und sind nach dem Neuladen weg; Tessera speichert sie nirgends. Analysieren, Aufteilen, Zusammenführen, Konvertieren und Vorlagen arbeiten alle mit dieser Liste und zeigen nach dem Entfernen einer Datei nichts mehr aus der alten Auswertung an. Beim Aufteilen bleibt ein Schlüssel, der in Ihrer Datei durch ein Passwort geschützt war, geschützt (Sie geben ein Passwort ein; ohne Schutz speichern Sie nur ausdrücklich, mit Hinweis). Auf einmal prüft Tessera höchstens 200 Zertifikate, 50 Schlüssel und 50 Zertifikatsanfragen. Modulversion 1.2.0. -- Zertifikat-Manager, Zusammenführen und Formate: Tessera ordnet Serverzertifikat, Zwischenzertifikate und Wurzel selbst und prüft dabei die echte Unterschrift jedes Zertifikats. „Fullchain“ und „Nur Kette“ gibt es als PEM, .p7b und .p7c, dazu Zertifikat und Schlüssel in einer PEM-Datei und PFX-Dateien mit eigenem Passwort, wahlweise „Kompatibel“ (auch für ältere Windows-Server, Vorgabe) oder „Modern“ (AES-256). Das Wurzelzertifikat kommt nur mit, wenn Sie „Root-Zertifikat mitnehmen“ ankreuzen. Fehlt ein Zwischenzertifikat, meldet Tessera es mit Namen und bietet „Fehlendes Zertifikat holen“ an: Nur wenn Sie darauf klicken, holt Tessera das Zertifikat von der Adresse des Ausstellers, die im Zertifikat selbst steht, prüft, dass es das Zertifikat wirklich ausgestellt hat, und kennzeichnet es als „nachgeladen“. Neu im Reiter „Konvertieren“: jedes erkannte Zertifikat, jeder Schlüssel und jede Anfrage in jedes passende Format, auch Schlüssel mit Passwort. PFX-Dateien mit Passwörtern, die Umlaute oder das Eurozeichen enthalten, lassen sich jetzt in beide Richtungen mit Windows, OpenSSL und Java austauschen. -- Zertifikat-Manager, Vorlagen: Für Nginx, Apache (ab und vor 2.4.8), Windows/IIS, Nginx Proxy Manager, HAProxy und Tomcat erzeugt Tessera mit einem Klick die passenden Dateien samt den Zeilen für die Einrichtung und einer kurzen Anleitung. Dafür braucht es das Zertifikat und den passenden privaten Schlüssel. +- Zertifikatsmanager, ein gemeinsamer Arbeitsbereich: Im ersten Reiter „Dateien“ laden Sie mehrere Dateien nacheinander oder auf einmal hoch, auch ZIP-Dateien vom Zertifikatsaussteller, und können PEM-Text einfügen. Jede Datei bleibt in der Liste, zu jeder steht, was Tessera darin erkannt hat; einzelne Dateien nehmen Sie mit ihrem eigenen Knopf wieder heraus. Passwörter geben Sie je Datei ein. Die Liste, Schlüssel und Passwörter bleiben nur in diesem Browserfenster und sind nach dem Neuladen weg; Tessera speichert sie nirgends. Analysieren, Aufteilen, Zusammenführen, Konvertieren und Vorlagen arbeiten alle mit dieser Liste und zeigen nach dem Entfernen einer Datei nichts mehr aus der alten Auswertung an. Beim Aufteilen bleibt ein Schlüssel, der in Ihrer Datei durch ein Passwort geschützt war, geschützt (Sie geben ein Passwort ein; ohne Schutz speichern Sie nur ausdrücklich, mit Hinweis). Auf einmal prüft Tessera höchstens 200 Zertifikate, 50 Schlüssel und 50 Zertifikatsanfragen. Modulversion 1.2.0. +- Zertifikatsmanager, Zusammenführen und Formate: Tessera ordnet Serverzertifikat, Zwischenzertifikate und Wurzel selbst und prüft dabei die echte Unterschrift jedes Zertifikats. „Fullchain“ und „Nur Kette“ gibt es als PEM, .p7b und .p7c, dazu Zertifikat und Schlüssel in einer PEM-Datei und PFX-Dateien mit eigenem Passwort, wahlweise „Kompatibel“ (auch für ältere Windows-Server, Vorgabe) oder „Modern“ (AES-256). Das Wurzelzertifikat kommt nur mit, wenn Sie „Root-Zertifikat mitnehmen“ ankreuzen. Fehlt ein Zwischenzertifikat, meldet Tessera es mit Namen und bietet „Fehlendes Zertifikat holen“ an: Nur wenn Sie darauf klicken, holt Tessera das Zertifikat von der Adresse des Ausstellers, die im Zertifikat selbst steht, prüft, dass es das Zertifikat wirklich ausgestellt hat, und kennzeichnet es als „nachgeladen“. Neu im Reiter „Konvertieren“: jedes erkannte Zertifikat, jeder Schlüssel und jede Anfrage in jedes passende Format, auch Schlüssel mit Passwort. PFX-Dateien mit Passwörtern, die Umlaute oder das Eurozeichen enthalten, lassen sich jetzt in beide Richtungen mit Windows, OpenSSL und Java austauschen. +- Zertifikatsmanager, Vorlagen: Für Nginx, Apache (ab und vor 2.4.8), Windows/IIS, Nginx Proxy Manager, HAProxy und Tomcat erzeugt Tessera mit einem Klick die passenden Dateien samt den Zeilen für die Einrichtung und einer kurzen Anleitung. Dafür braucht es das Zertifikat und den passenden privaten Schlüssel. ### Geändert +- Zertifikatsmanager: Das Modul heißt jetzt überall „Zertifikatsmanager“ – in der Seitenleiste, im Marktplatz, auf der Seite und in den Anleitungen. Bisher stand in der Seitenleiste „Cert Manager“ und auf der Seite „Zertifikat-Manager“. - Eigene Module: Tessera hält jetzt bis zu acht eigene Module offen (vorher fünf). Module, die Sie beim Start vorladen lassen, schließt Tessera nie von selbst. - DKV-Rechnung: Die Modulbeschreibung im Marktplatz weist jetzt darauf hin, dass das Modul die Freigabestufe „Verwalten“ benötigt. Mit „Benutzen“ erscheint es zwar in der Seitenleiste, öffnet aber nur die Seite „Kein Zugriff“. Modulversion 1.1.0. - Nextcloud-Status: Über der Kachelliste gibt es jetzt ein Suchfeld. Es zeigt nur die Clouds, deren Kundenname den eingegebenen Text enthält; Groß- und Kleinschreibung spielen keine Rolle, die gewählte Sortierung bleibt erhalten. Die Kacheln sind kompakter, der Kundenname und die Adresse der Cloud stehen in voller Länge da, statt abgeschnitten zu werden. Die Knöpfe Benachrichtigen, Prüfen und Bearbeiten sitzen jetzt unten rechts neben „Zuletzt geprüft“. @@ -32,9 +33,9 @@ Diese Liste beschreibt in einfachen Worten, was sich von Version zu Version an T ### Behoben -- Sicherheit: Der Schutz davor, dass Tessera interne Adressen abruft (Favoriten-Symbole, Logos in Nextcloud-Status und das neue „Fehlendes Zertifikat holen“), erkennt jetzt auch versteckte Schreibweisen interner IPv6-Adressen, zum Beispiel die gemappte Form ::ffff:7f00:1, NAT64 und 6to4. Beim neuen Abruf prüft Tessera die Adresse außerdem noch einmal im Moment des Verbindens. Der Zertifikat-Manager ist zudem gegen präparierte Dateien abgesichert, die ihn verlangsamen oder zum Absturz bringen könnten: ZIP-Dateien, die sich zu riesigen Datenmengen entpacken (sogenannte ZIP-Bomben), Dateien aus tausenden unvollständigen Zertifikatsblöcken und Passwortschutz mit übermäßig vielen Rechenschritten werden abgewiesen oder übersprungen, und Uploads über der Gesamtgrenze bricht Tessera schon beim Empfang ab. Auch IPv6-Adressen in eckigen Klammern (zum Beispiel für öffentliche Server) werden dabei jetzt richtig beurteilt. -- Zertifikat-Manager: Beim Zusammenführen ersetzte eine zweite Datei die erste; jetzt bleiben alle Dateien in der Liste. Zertifikate und Schlüssel mit elliptischen Kurven (EC) wurden bisher nicht erkannt; jetzt funktionieren sie in allen Reitern. -- Desktop-App: Dateien lassen sich jetzt auch in der Desktop-App per Ziehen und Ablegen hochladen, zum Beispiel im Modul Dateien oder im Zertifikat-Manager. Bisher übernahm die App das Ablegen selbst, und auf der Seite kam nichts an (Linux und Windows). Dafür ist die neue Version der Desktop-App nötig. +- Sicherheit: Der Schutz davor, dass Tessera interne Adressen abruft (Favoriten-Symbole, Logos in Nextcloud-Status und das neue „Fehlendes Zertifikat holen“), erkennt jetzt auch versteckte Schreibweisen interner IPv6-Adressen, zum Beispiel die gemappte Form ::ffff:7f00:1, NAT64 und 6to4. Beim neuen Abruf prüft Tessera die Adresse außerdem noch einmal im Moment des Verbindens. Der Zertifikatsmanager ist zudem gegen präparierte Dateien abgesichert, die ihn verlangsamen oder zum Absturz bringen könnten: ZIP-Dateien, die sich zu riesigen Datenmengen entpacken (sogenannte ZIP-Bomben), Dateien aus tausenden unvollständigen Zertifikatsblöcken und Passwortschutz mit übermäßig vielen Rechenschritten werden abgewiesen oder übersprungen, und Uploads über der Gesamtgrenze bricht Tessera schon beim Empfang ab. Auch IPv6-Adressen in eckigen Klammern (zum Beispiel für öffentliche Server) werden dabei jetzt richtig beurteilt. +- Zertifikatsmanager: Beim Zusammenführen ersetzte eine zweite Datei die erste; jetzt bleiben alle Dateien in der Liste. Zertifikate und Schlüssel mit elliptischen Kurven (EC) wurden bisher nicht erkannt; jetzt funktionieren sie in allen Reitern. +- Desktop-App: Dateien lassen sich jetzt auch in der Desktop-App per Ziehen und Ablegen hochladen, zum Beispiel im Modul Dateien oder im Zertifikatsmanager. Bisher übernahm die App das Ablegen selbst, und auf der Seite kam nichts an (Linux und Windows). Dafür ist die neue Version der Desktop-App nötig. - Nextcloud-Status: Das Formular zum Hinzufügen und Bearbeiten einer Cloud zeigte bei manchen Eingaben englische Meldungen (zum Beispiel bei einer Bildadresse mit http://). Alle Hinweise in diesem Formular erscheinen jetzt auf Deutsch (bei englischer Spracheinstellung auf Englisch). ## 1.10.1 – 2026-10-06 diff --git a/apps/api/src/cert-manager/__fixtures__/README.md b/apps/api/src/cert-manager/__fixtures__/README.md index e6acb99..6d4fe79 100644 --- a/apps/api/src/cert-manager/__fixtures__/README.md +++ b/apps/api/src/cert-manager/__fixtures__/README.md @@ -1,4 +1,4 @@ -# Fixtures des Zertifikat-Managers +# Fixtures des Zertifikatsmanagers Nur Testdaten (quick-261009-ikt). Keine echten Zertifikate, keine echten Schluessel. diff --git a/apps/api/src/cert-manager/__fixtures__/make-fixtures.sh b/apps/api/src/cert-manager/__fixtures__/make-fixtures.sh index e266ecd..7301ac7 100644 --- a/apps/api/src/cert-manager/__fixtures__/make-fixtures.sh +++ b/apps/api/src/cert-manager/__fixtures__/make-fixtures.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Test-only PKI for quick 261009-ikt (Zertifikat-Manager). +# Test-only PKI for quick 261009-ikt (Zertifikatsmanager). # Erzeugt alle Fixtures dieses Ordners mit OpenSSL (>= 3.4: -legacy, -not_before). # Die Schluessel der CAs liegen nur in einem mktemp-Ordner, den ein trap loescht; # committet werden nur Schluessel der Server-Zertifikate. diff --git a/apps/api/src/cert-manager/cert-chain.ts b/apps/api/src/cert-manager/cert-chain.ts index 3cad03e..8b3c39a 100644 --- a/apps/api/src/cert-manager/cert-chain.ts +++ b/apps/api/src/cert-manager/cert-chain.ts @@ -4,7 +4,7 @@ import { spkiDerOf } from './cert-keys'; import type { CertItem, ChainGap, ChainInfo, CsrItem, KeyItem } from './cert-types'; /** - * Kettenbau des Zertifikat-Managers (quick-261009-ikt, D-18). Reine Funktionen, kein Netz. + * Kettenbau des Zertifikatsmanagers (quick-261009-ikt, D-18). Reine Funktionen, kein Netz. * * Aussteller eines Zertifikats C ist jedes andere Zertifikat I der Menge mit * `C.checkIssued(I) && C.verify(I.publicKey)`: checkIssued vergleicht Namen, Schluesselkennungen diff --git a/apps/api/src/cert-manager/cert-csr.ts b/apps/api/src/cert-manager/cert-csr.ts index ce1bcef..7ef66dd 100644 --- a/apps/api/src/cert-manager/cert-csr.ts +++ b/apps/api/src/cert-manager/cert-csr.ts @@ -5,7 +5,7 @@ import { safeBaseName } from './cert-names'; import type { CsrItem, ItemSource } from './cert-types'; /** - * Zertifikatsanfragen (CSR) des Zertifikat-Managers (quick-261009-ikt, D-05, D-16). + * Zertifikatsanfragen (CSR) des Zertifikatsmanagers (quick-261009-ikt, D-05, D-16). * * Die CSR-Leser von forge koennen nur RSA. Darum wird der ASN.1-Aufbau selbst gelesen * (CertificationRequestInfo: Version, Inhaber, oeffentlicher Schluessel, Attribute) und der diff --git a/apps/api/src/cert-manager/cert-keys.ts b/apps/api/src/cert-manager/cert-keys.ts index f75c94d..10684ad 100644 --- a/apps/api/src/cert-manager/cert-keys.ts +++ b/apps/api/src/cert-manager/cert-keys.ts @@ -10,7 +10,7 @@ import { } from './cert-types'; /** - * Private Schluessel des Zertifikat-Managers (quick-261009-ikt, D-05, D-11, D-16). + * Private Schluessel des Zertifikatsmanagers (quick-261009-ikt, D-05, D-11, D-16). * * Alles laeuft ueber node:crypto (`createPrivateKey`): PKCS#1, PKCS#8 und SEC1, als PEM und als DER, * unverschluesselt, als verschluesseltes PKCS#8 und klassisch verschluesselt (Proc-Type), fuer RSA, diff --git a/apps/api/src/cert-manager/cert-manager.changelog.ts b/apps/api/src/cert-manager/cert-manager.changelog.ts index 9337731..e4a41aa 100644 --- a/apps/api/src/cert-manager/cert-manager.changelog.ts +++ b/apps/api/src/cert-manager/cert-manager.changelog.ts @@ -1,7 +1,7 @@ import type { ModuleChangelog } from '../module-registry/module-changelog'; /** - * Änderungen am Modul Cert Manager, neueste Version zuerst (quick-261008-w5w). + * Änderungen am Modul Zertifikatsmanager, neueste Version zuerst (quick-261008-w5w). * Die Version in der Seed-Datei kommt ausschließlich von hier; Regeln siehe * docs/anleitung-entwicklung.md, Abschnitt „Modulversion und Modul-Changelog pflegen“. */ @@ -35,6 +35,11 @@ export const CERT_MANAGER_CHANGELOG: ModuleChangelog = [ de: 'Fehlt ein Zwischenzertifikat, holt „Fehlendes Zertifikat holen“ es auf Knopfdruck beim Aussteller.', en: 'If an intermediate certificate is missing, “Fetch missing certificate” gets it from the issuer at the click of a button.', }, + { + kind: 'changed', + de: 'Das Modul heißt jetzt einheitlich „Zertifikatsmanager“ (vorher „Cert Manager“ in der Seitenleiste).', + en: 'The module now has one consistent name everywhere (previously “Cert Manager” in the sidebar).', + }, { kind: 'fixed', de: 'Beim Zusammenführen ersetzt eine zweite Datei nicht mehr die erste.', diff --git a/apps/api/src/cert-manager/cert-manager.controller.ts b/apps/api/src/cert-manager/cert-manager.controller.ts index 7342644..f790240 100644 --- a/apps/api/src/cert-manager/cert-manager.controller.ts +++ b/apps/api/src/cert-manager/cert-manager.controller.ts @@ -68,7 +68,7 @@ export function repairFileName(name: string): string { } /** - * CertManagerController: Zertifikat-Manager (quick-261009-ikt, D-14). + * CertManagerController: Zertifikatsmanager (quick-261009-ikt, D-14). * * Zustandslos: nichts wird gespeichert, Passwoerter und Schluessel kommen nie in ein Log * (kein Logger-Aufruf mit Anfrageinhalt; das Request-Log kennt nur Pfad und Status). diff --git a/apps/api/src/cert-manager/cert-manager.seed.ts b/apps/api/src/cert-manager/cert-manager.seed.ts index e9c6e1b..9fe1bd4 100644 --- a/apps/api/src/cert-manager/cert-manager.seed.ts +++ b/apps/api/src/cert-manager/cert-manager.seed.ts @@ -16,7 +16,7 @@ export async function seedCertManagerModule( ): Promise { await moduleRegistryService.seedModule({ slug: 'cert-manager', - name: 'Cert Manager', + name: 'Zertifikatsmanager', // Die Version kommt ausschließlich aus dem Changelog (quick-261008-w5w). version: latestVersion(CERT_MANAGER_CHANGELOG), category: 'security-tools', diff --git a/apps/api/src/cert-manager/cert-model.ts b/apps/api/src/cert-manager/cert-model.ts index 2ef28c5..fcdea4e 100644 --- a/apps/api/src/cert-manager/cert-model.ts +++ b/apps/api/src/cert-manager/cert-model.ts @@ -29,7 +29,7 @@ import { expandZip, isZip } from './zip-expand'; export { describeKey, keyIdOf, sha256Hex }; /** - * Der eine Parser des Zertifikat-Managers (quick-261009-ikt, D-08, D-16). + * Der eine Parser des Zertifikatsmanagers (quick-261009-ikt, D-08, D-16). * * Alles ueber Zertifikate und Schluessel entscheidet node:crypto (RSA und EC, PEM und DER). * node-forge wird nur fuer PKCS#12 und als allgemeiner ASN.1-Leser/-Schreiber genutzt; die diff --git a/apps/api/src/cert-manager/cert-names.ts b/apps/api/src/cert-manager/cert-names.ts index c2cd3a5..b1cb79f 100644 --- a/apps/api/src/cert-manager/cert-names.ts +++ b/apps/api/src/cert-manager/cert-names.ts @@ -1,5 +1,5 @@ /** - * Dateinamen-Helfer des Zertifikat-Managers. Eigene Datei, damit cert-model.ts und cert-output.ts + * Dateinamen-Helfer des Zertifikatsmanagers. Eigene Datei, damit cert-model.ts und cert-output.ts * einander nicht gegenseitig einbinden muessen. */ diff --git a/apps/api/src/cert-manager/cert-output.ts b/apps/api/src/cert-manager/cert-output.ts index b88dd98..d975955 100644 --- a/apps/api/src/cert-manager/cert-output.ts +++ b/apps/api/src/cert-manager/cert-output.ts @@ -18,7 +18,7 @@ import { } from './cert-types'; /** - * Ausgabe-Bausteine des Zertifikat-Managers (quick-261009-ikt, D-19). + * Ausgabe-Bausteine des Zertifikatsmanagers (quick-261009-ikt, D-19). * Jeder Inhalt in jedem Format laeuft durch die eine Funktion buildOutput. Die Reihenfolge baut die API * immer selbst aus den gesendeten Zertifikaten (buildChains); eine vom Browser mitgeschickte Reihenfolge * wird nie uebernommen. Schluessel und Passwoerter werden nur verarbeitet, nie gespeichert oder diff --git a/apps/api/src/cert-manager/cert-pkcs12.ts b/apps/api/src/cert-manager/cert-pkcs12.ts index f497fed..8d244ce 100644 --- a/apps/api/src/cert-manager/cert-pkcs12.ts +++ b/apps/api/src/cert-manager/cert-pkcs12.ts @@ -4,7 +4,7 @@ import { KdfTooExpensiveError, RequestBudget } from './cert-budget'; import { MAX_PASSWORDS } from './cert-keys'; /** - * PKCS#12 (.pfx/.p12) des Zertifikat-Managers (quick-261009-ikt, D-20). + * PKCS#12 (.pfx/.p12) des Zertifikatsmanagers (quick-261009-ikt, D-20). * * Lesen laeuft ueber forge (`pkcs12FromAsn1`): OpenSSL-3-Standard (AES-256, SHA-256), das * kompatible 3DES-Format und das alte RC2-Format werden gelesen. forge kennt aber nur RSA: diff --git a/apps/api/src/cert-manager/cert-types.ts b/apps/api/src/cert-manager/cert-types.ts index ee5bef8..cc56c4e 100644 --- a/apps/api/src/cert-manager/cert-types.ts +++ b/apps/api/src/cert-manager/cert-types.ts @@ -1,7 +1,7 @@ import { HttpException } from '@nestjs/common'; /** - * Vertrag des Zertifikat-Managers (quick-261009-ikt, D-15, D-19, D-24). + * Vertrag des Zertifikatsmanagers (quick-261009-ikt, D-15, D-19, D-24). * Die Typen werden 1:1 in apps/web/.../cert-manager/actions.ts gespiegelt. * Alles hier ist zustandslos: Tessera speichert weder Dateien noch Schluessel noch Passwoerter. */ diff --git a/apps/api/src/cert-manager/zip-expand.ts b/apps/api/src/cert-manager/zip-expand.ts index e17635d..7694822 100644 --- a/apps/api/src/cert-manager/zip-expand.ts +++ b/apps/api/src/cert-manager/zip-expand.ts @@ -4,7 +4,7 @@ import { cleanSourcePath } from './cert-names'; import type { IgnoredEntry } from './cert-types'; /** - * ZIP-Erkennung und -Entpacken des Zertifikat-Managers (quick-261009-ikt, D-17). + * ZIP-Erkennung und -Entpacken des Zertifikatsmanagers (quick-261009-ikt, D-17). * * Regeln: * - Ein ZIP erkennt man an den Anfangsbytes (PK\x03\x04 oder PK\x05\x06), nie an der Endung. diff --git a/apps/api/src/http-setup.ts b/apps/api/src/http-setup.ts index 9756281..b0933f9 100644 --- a/apps/api/src/http-setup.ts +++ b/apps/api/src/http-setup.ts @@ -14,7 +14,7 @@ export type HttpApp = Pick { it('zeigt Titel und die Reiter in der Reihenfolge Dateien, Analysieren, Aufteilen, Zusammenführen, Konvertieren, Vorlagen', () => { render(); - expect(screen.getByRole('heading', { name: 'Zertifikat-Manager' })).toBeInTheDocument(); + expect(screen.getByRole('heading', { name: 'Zertifikatsmanager' })).toBeInTheDocument(); const nav = screen.getByRole('navigation'); const tabs = within(nav).getAllByRole('button'); expect(tabs.map((b) => b.textContent)).toEqual([ diff --git a/apps/web/src/app/(portal)/modules/cert-manager/page.tsx b/apps/web/src/app/(portal)/modules/cert-manager/page.tsx index de9e0e6..8d71898 100644 --- a/apps/web/src/app/(portal)/modules/cert-manager/page.tsx +++ b/apps/web/src/app/(portal)/modules/cert-manager/page.tsx @@ -16,7 +16,7 @@ import { useCertWorkspace } from './use-cert-workspace'; type TabId = 'files' | 'analyze' | 'split' | 'merge' | 'convert' | 'templates'; /** - * CertManagerPage: Zertifikat-Manager rund um einen gemeinsamen Arbeitsbereich (quick-261009-ikt). + * CertManagerPage: Zertifikatsmanager rund um einen gemeinsamen Arbeitsbereich (quick-261009-ikt). * Der erste Reiter „Dateien“ sammelt alles; die weiteren Reiter arbeiten auf dieser Liste. * Die Liste lebt nur im Arbeitsspeicher dieses Browserfensters; Reiterwechsel behaelt sie. */ diff --git a/apps/web/src/app/(portal)/modules/cert-manager/working-set.ts b/apps/web/src/app/(portal)/modules/cert-manager/working-set.ts index d3521f7..3085d5f 100644 --- a/apps/web/src/app/(portal)/modules/cert-manager/working-set.ts +++ b/apps/web/src/app/(portal)/modules/cert-manager/working-set.ts @@ -1,5 +1,5 @@ /** - * Arbeitsbereich des Zertifikat-Managers (quick-261009-ikt, D-01, D-17, D-23). + * Arbeitsbereich des Zertifikatsmanagers (quick-261009-ikt, D-01, D-17, D-23). * * Reine Funktionen ohne React: eine Liste von Eintraegen, die nur wachsen oder gezielt * schrumpfen kann. Eine zweite Auswahl haengt an, sie ersetzt nie die erste. diff --git a/apps/web/src/components/accounting/file-drop-area.tsx b/apps/web/src/components/accounting/file-drop-area.tsx index 4c18881..c883e78 100644 --- a/apps/web/src/components/accounting/file-drop-area.tsx +++ b/apps/web/src/components/accounting/file-drop-area.tsx @@ -19,7 +19,7 @@ interface FileDropAreaProps { /** * Ablageflaeche fuer eine einzelne Datei (Finanzbuchhaltungs-Module, * quick-261002-fm5). Eigenstaendig, ohne Texte aus einem anderen Modul — - * Bauform wie die Ablage des Zertifikat-Managers: echte Schaltflaeche fuer + * Bauform wie die Ablage des Zertifikatsmanagers: echte Schaltflaeche fuer * Klick UND Ziehen, Entfernen als Geschwister daneben. */ export function FileDropArea({ diff --git a/apps/web/src/components/accounting/tab-bar.tsx b/apps/web/src/components/accounting/tab-bar.tsx index e391867..06c9a57 100644 --- a/apps/web/src/components/accounting/tab-bar.tsx +++ b/apps/web/src/components/accounting/tab-bar.tsx @@ -6,7 +6,7 @@ interface TabBarProps { onChange: (id: T) => void; } -/** Reiterleiste der Finanzbuchhaltungs-Module — Muster Zertifikat-Manager. */ +/** Reiterleiste der Finanzbuchhaltungs-Module — Muster Zertifikatsmanager. */ export function TabBar({ tabs, active, onChange }: TabBarProps) { return (