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();