initial upload

This commit is contained in:
Kai Waggeling 2025-05-17 16:20:29 +02:00
parent 987c99d00b
commit bb6c0147db
44 changed files with 1884 additions and 131 deletions

View file

@ -0,0 +1,77 @@
import {
default as forge
} from "node-forge";
import {
writeFileSync,
mkdirSync
} from "fs";
import {
randomBytes
} from "crypto";
// Funktion zur Generierung und Speicherung eines Root-CA-Zertifikats
export function generateRootCA(Params) {
const uid = randomBytes(4).toString("hex");
// Generiere ein neues Schlüsselpaar
const keys = forge.pki.rsa.generateKeyPair(4096);
// Erstelle einen neuen CSR
const csr = forge.pki.createCertificationRequest();
// Setze den öffentlichen Schlüssel
csr.publicKey = keys.publicKey;
// Setze die CSR Attribute
csr.setSubject([{
name: 'commonName',
value: 'example.com'
}, {
name: 'countryName',
value: 'US'
}, {
shortName: 'ST',
value: 'California'
}, {
name: 'localityName',
value: 'San Francisco'
}, {
name: 'organizationName',
value: 'Example, Inc.'
}, {
shortName: 'OU',
value: 'IT'
}]);
// Signiere die CSR mit dem privaten Schlüssel
csr.sign(keys.privateKey, forge.md.sha256.create());
// Überprüfe die CSR
const verified = csr.verify();
if (verified) {
console.log('CSR verification successful');
} else {
console.error('CSR verification failed');
return;
}
// CSR und Schlüssel als PEM kodieren
const pemCsr = forge.pki.certificationRequestToPem(csr);
const pemPrivateKey = forge.pki.privateKeyToPem(keys.privateKey);
// Erstelle das RootCA Verzeichnis
mkdirSync(`datastore/certificates/${uid}`)
// Zertifikat und Schlüssel in Dateien speichern
writeFileSync(`datastore/certificates/${uid}/rootCA.crt`, pemCert);
writeFileSync(`datastore/certificates/${uid}/rootCA.key`, pemPrivateKey);
writeFileSync(`datastore/certificates/${uid}/rootCA.pub`, pemPublicKey);
console.log('Root CA-Zertifikat und Schlüssel wurden generiert und gespeichert.');
}
// Funktion aufrufen, um das Root-CA-Zertifikat zu generieren
// generateRootCA();