| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | '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;
 |