initial upload
This commit is contained in:
parent
987c99d00b
commit
bb6c0147db
44 changed files with 1884 additions and 131 deletions
77
functions/pki.createCSR.mjs
Normal file
77
functions/pki.createCSR.mjs
Normal 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();
|
||||
Loading…
Add table
Add a link
Reference in a new issue