You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							45 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							45 lines
						
					
					
						
							1.2 KiB
						
					
					
				'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;
 | 
						|
 |