node-http-server – Blame information for rev 8
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
8 | office | 1 | #!/usr/bin/env node |
2 | /////////////////////////////////////////////////////////////////////////// |
||
3 | // Copyright (C) 2017 Wizardry and Steamworks - License: GNU GPLv3 // |
||
4 | /////////////////////////////////////////////////////////////////////////// |
||
5 | |||
6 | const forge = require('node-forge'); |
||
7 | const moment = require('moment'); |
||
8 | |||
9 | module.exports = { |
||
10 | // Generate certificates on the fly using incremental serials. |
||
11 | generateCertificates: (name, domain, keySize, callback) => { |
||
12 | process.nextTick(() => { |
||
13 | // Generate 1024-bit key-pair. |
||
14 | const keys = forge |
||
15 | .pki |
||
16 | .rsa |
||
17 | .generateKeyPair(keySize); |
||
18 | // Create self-signed certificate. |
||
19 | const cert = forge |
||
20 | .pki |
||
21 | .createCertificate(); |
||
22 | cert.serialNumber = moment().format('x'); |
||
23 | cert.publicKey = keys.publicKey; |
||
24 | cert |
||
25 | .validity |
||
26 | .notBefore = moment().toDate(); |
||
27 | cert |
||
28 | .validity |
||
29 | .notAfter |
||
30 | .setFullYear( |
||
31 | cert |
||
32 | .validity |
||
33 | .notBefore |
||
34 | .getFullYear() + 1 |
||
35 | ); |
||
36 | cert.setSubject([{ |
||
37 | name: 'commonName', |
||
38 | value: domain |
||
39 | }, { |
||
40 | name: 'organizationName', |
||
41 | value: name |
||
42 | }]); |
||
43 | cert.setIssuer([{ |
||
44 | name: 'commonName', |
||
45 | value: domain |
||
46 | }, { |
||
47 | name: 'organizationName', |
||
48 | value: name |
||
49 | }]); |
||
50 | |||
51 | // Self-sign certificate. |
||
52 | cert.sign( |
||
53 | keys.privateKey, |
||
54 | forge |
||
55 | .md |
||
56 | .sha256 |
||
57 | .create() |
||
58 | ); |
||
59 | |||
60 | // Summon the callback with the certificate block. |
||
61 | callback({ |
||
62 | privateKey: forge |
||
63 | .pki |
||
64 | .privateKeyToPem( |
||
65 | keys |
||
66 | .privateKey |
||
67 | ), |
||
68 | publicKey: forge |
||
69 | .pki |
||
70 | .publicKeyToPem( |
||
71 | keys |
||
72 | .publicKey |
||
73 | ), |
||
74 | certificate: forge |
||
75 | .pki |
||
76 | .certificateToPem(cert) |
||
77 | }); |
||
78 | }); |
||
79 | } |
||
80 | }; |