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