mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
var forge = require("node-forge");
|
|
forge.options.usePureJavaScript = true;
|
|
var fs = require("fs");
|
|
var mkdirp = require("mkdirp");
|
|
|
|
var pki = forge.pki;
|
|
var rsa = forge.pki.rsa;
|
|
var startTime, endTime;
|
|
|
|
|
|
|
|
module.exports = function({
|
|
bits = 2048,
|
|
certificatePath = "database/certificate",
|
|
doLogging = false,
|
|
} = {}){
|
|
function log(t){
|
|
if(doLogging) console.log("lib/generateSSLcert.js | "+t);
|
|
}
|
|
log("Generating SSL certificate with "+bits+" bits at "+certificatePath);
|
|
|
|
startTime = Date.now();
|
|
var keypair = rsa.generateKeyPair({bits: bits, e: 0x10001});
|
|
endTime = Date.now();
|
|
log("Generated 2048bit keypair in: "+(endTime-startTime)+" ms");
|
|
|
|
startTime = Date.now();
|
|
var cert = pki.createCertificate();
|
|
cert.publicKey = keypair.publicKey;
|
|
cert.serialNumber = "01";
|
|
|
|
cert.validity.notBefore = new Date();
|
|
cert.validity.notAfter = new Date(Date.now()+(1000*60*60*24*365)); // valid for one year
|
|
|
|
// self-sign certificate
|
|
cert.sign(keypair.privateKey);
|
|
|
|
// Convert certificate to pem type and write it to a file
|
|
if(certificatePath[certificatePath.length-1] != "/") certificatePath += "/";
|
|
if(!fs.existsSync(certificatePath)) {
|
|
mkdirp.sync(certificatePath);
|
|
console.log("Created directory: "+certificatePath);
|
|
}
|
|
fs.writeFileSync(certificatePath+ "cert.key", pki.privateKeyToPem(keypair.privateKey));
|
|
fs.writeFileSync(certificatePath+ "cert.crt", pki.certificateToPem(cert));
|
|
|
|
endTime = Date.now();
|
|
log("Generated certificate in: "+(endTime-startTime)+" ms");
|
|
}
|