1 | 'use strict';
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | const selfsigned = require('selfsigned');
|
7 |
|
8 | function createCertificate(attrs) {
|
9 | return selfsigned.generate(attrs, {
|
10 | algorithm: 'sha256',
|
11 | days: 30,
|
12 | keySize: 2048,
|
13 | extensions: [
|
14 | {
|
15 | name: 'basicConstraints',
|
16 | cA: true,
|
17 | },
|
18 | {
|
19 | name: 'keyUsage',
|
20 | keyCertSign: true,
|
21 | digitalSignature: true,
|
22 | nonRepudiation: true,
|
23 | keyEncipherment: true,
|
24 | dataEncipherment: true,
|
25 | },
|
26 | {
|
27 | name: 'subjectAltName',
|
28 | altNames: [
|
29 | {
|
30 |
|
31 | type: 2,
|
32 | value: 'localhost',
|
33 | },
|
34 | {
|
35 | type: 2,
|
36 | value: 'localhost.localdomain',
|
37 | },
|
38 | {
|
39 | type: 2,
|
40 | value: 'lvh.me',
|
41 | },
|
42 | {
|
43 | type: 2,
|
44 | value: '*.lvh.me',
|
45 | },
|
46 | {
|
47 | type: 2,
|
48 | value: '[::1]',
|
49 | },
|
50 | {
|
51 |
|
52 | type: 7,
|
53 | ip: '127.0.0.1',
|
54 | },
|
55 | {
|
56 | type: 7,
|
57 | ip: 'fe80::1',
|
58 | },
|
59 | ],
|
60 | },
|
61 | ],
|
62 | });
|
63 | }
|
64 |
|
65 | module.exports = createCertificate;
|