1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| '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: 'extKeyUsage',
| serverAuth: true,
| clientAuth: true,
| codeSigning: true,
| timeStamping: 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;
|
|