66 lines
1.2 KiB
JavaScript
66 lines
1.2 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
/* eslint-disable
|
||
|
space-before-function-paren
|
||
|
*/
|
||
|
const selfsigned = require('selfsigned');
|
||
|
|
||
|
function createCertificate (attrs) {
|
||
|
return selfsigned.generate(attrs, {
|
||
|
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;
|