Merge branch 'phase/029-handbuch'

# Conflicts:
#	src/worker/index.ts
This commit is contained in:
2026-10-12 16:56:22 +02:00
13 changed files with 701 additions and 3 deletions
+18
View File
@@ -219,3 +219,21 @@ export async function deploymentKeySicherstellen(): Promise<string> {
});
return neu.id;
}
/**
* Passt der Master-Key zur Datenbank? (#029) Oeffnet probeweise den Deployment-Key. Schlaegt
* das fehl, ist entweder die falsche Master-Key-Datei eingebunden oder eine Sicherung ohne den
* dazugehoerigen Master-Key zurueckgespielt worden – beides soll beim Start auffallen, nicht
* erst beim ersten Ausrollen.
*/
export async function masterKeyPruefen(deploymentKeyId: string): Promise<void> {
try {
const klartext = await privateKeyLaden(deploymentKeyId);
klartext.fill(0);
} catch {
throw new Error(
"Der Master-Key passt nicht zur Datenbank: Der Deployment-Key lässt sich nicht entschlüsseln. " +
"Ist SSHKV_MASTER_KEY_FILE die Datei, die zu dieser Datenbank gehört (Sicherung)?",
);
}
}
+2 -2
View File
@@ -13,7 +13,7 @@ import {
import { vorgangAusfuehren } from "@/worker/ausfuehren";
import { abholungenAufraeumen } from "@/worker/ablaeufe/privatekey";
import { taktVersenden, zusammenfassungVersenden } from "@/worker/benachrichtigung/versand";
import { deploymentKeySicherstellen } from "@/worker/geheimnisse";
import { deploymentKeySicherstellen, masterKeyPruefen } from "@/worker/geheimnisse";
import { HANDLER } from "@/worker/handler";
/**
@@ -23,7 +23,7 @@ import { HANDLER } from "@/worker/handler";
async function starten(): Promise<void> {
// Zuerst: ohne lesbaren Master-Key und Deployment-Key kann der Worker nichts tun, und das
// soll beim Start auffallen, nicht beim ersten Vorgang.
await deploymentKeySicherstellen();
await masterKeyPruefen(await deploymentKeySicherstellen());
const boss = await warteschlangeHolen();
await boss.work<VorgangsJob>(