Skip to content

Instantly share code, notes, and snippets.

@ldmsys
Last active April 8, 2021 12:27
Show Gist options
  • Save ldmsys/3a177278416edff3c01268e787b0c9f0 to your computer and use it in GitHub Desktop.
Save ldmsys/3a177278416edff3c01268e787b0c9f0 to your computer and use it in GitHub Desktop.
Get Key from ssl/ directory or selfsign
import forge, { pki } from 'node-forge';
import fs from 'fs';
export interface KeyPair {
cert: string,
key: string
}
export function getKey(): KeyPair {
if(!fs.existsSync('ssl/private.pem') || !fs.existsSync('ssl/certificate.pem')) {
console.log("HTTPS Certificate not found on ssl/private.pem, ssl/certificate.pem");
console.log("Generating Self-signed certificate, It may takes a while");
let pki = forge.pki;
let keys = pki.rsa.generateKeyPair(2048);
let cert = pki.createCertificate();
cert.publicKey = keys.publicKey;
cert.serialNumber = '01';
cert.validity.notBefore = new Date(91152000000);
cert.validity.notAfter = new Date(253402300799000);
let attrs = [{
name: 'commonName',
value: '*'
}];
cert.setSubject(attrs);
cert.setIssuer(attrs);
cert.sign(keys.privateKey, forge.md.sha256.create());
return {
cert: pki.certificateToPem(cert),
key: pki.privateKeyToPem(keys.privateKey)
} as KeyPair
} else {
return {
cert: fs.readFileSync('ssl/certificate.pem').toString('utf-8'),
key: fs.readFileSync('ssl/private.pem').toString('utf-8')
} as KeyPair
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment