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