|
|
- 'use strict';
-
- const path = require('path');
- const fs = require('fs');
- const del = require('del');
- const createCertificate = require('./createCertificate');
-
- function getCertificate(logger) {
- // Use a self-signed certificate if no certificate was configured.
- // Cycle certs every 24 hours
- const certificatePath = path.join(__dirname, '../../ssl/server.pem');
-
- let certificateExists = fs.existsSync(certificatePath);
-
- if (certificateExists) {
- const certificateTtl = 1000 * 60 * 60 * 24;
- const certificateStat = fs.statSync(certificatePath);
-
- const now = new Date();
-
- // cert is more than 30 days old, kill it with fire
- if ((now - certificateStat.ctime) / certificateTtl > 30) {
- logger.info('SSL Certificate is more than 30 days old. Removing.');
-
- del.sync([certificatePath], { force: true });
-
- certificateExists = false;
- }
- }
-
- if (!certificateExists) {
- logger.info('Generating SSL Certificate');
-
- const attributes = [{ name: 'commonName', value: 'localhost' }];
- const pems = createCertificate(attributes);
-
- fs.writeFileSync(certificatePath, pems.private + pems.cert, {
- encoding: 'utf8',
- });
- }
-
- return fs.readFileSync(certificatePath);
- }
-
- module.exports = getCertificate;
|