63 lines
1.2 KiB
JavaScript
63 lines
1.2 KiB
JavaScript
|
'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;
|