'use strict'; const selfsigned = require('selfsigned'); function createCertificate(attributes) { return selfsigned.generate(attributes, { algorithm: 'sha256', days: 30, keySize: 2048, extensions: [ { name: 'basicConstraints', cA: true, }, { name: 'keyUsage', keyCertSign: true, digitalSignature: true, nonRepudiation: true, keyEncipherment: true, dataEncipherment: true, }, { name: 'extKeyUsage', serverAuth: true, clientAuth: true, codeSigning: true, timeStamping: true, }, { name: 'subjectAltName', altNames: [ { // type 2 is DNS type: 2, value: 'localhost', }, { type: 2, value: 'localhost.localdomain', }, { type: 2, value: 'lvh.me', }, { type: 2, value: '*.lvh.me', }, { type: 2, value: '[::1]', }, { // type 7 is IP type: 7, ip: '127.0.0.1', }, { type: 7, ip: 'fe80::1', }, ], }, ], }); } module.exports = createCertificate;