node-opcua-pki 3.1.1 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.yml +1 -1
- package/bin/crypto_create_CA.js +3 -3
- package/dist/{pki → lib/ca}/certificate_authority.d.ts +3 -3
- package/dist/{pki → lib/ca}/certificate_authority.js +63 -55
- package/dist/lib/ca/certificate_authority.js.map +1 -0
- package/dist/{crypto_create_CA.d.ts → lib/ca/crypto_create_CA.d.ts} +1 -1
- package/dist/{crypto_create_CA.js → lib/ca/crypto_create_CA.js} +25 -21
- package/dist/lib/ca/crypto_create_CA.js.map +1 -0
- package/dist/lib/ca/index.d.ts +1 -0
- package/dist/lib/ca/index.js +18 -0
- package/dist/lib/ca/index.js.map +1 -0
- package/dist/lib/ca/templates/ca_config_template.cnf.js.map +1 -0
- package/dist/lib/ca/templates/simple_config_template.cnf.js.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/{index.js → lib/index.js} +6 -5
- package/dist/lib/index.js.map +1 -0
- package/dist/{misc → lib/misc}/applicationurn.js +1 -1
- package/dist/lib/misc/applicationurn.js.map +1 -0
- package/dist/lib/misc/hostname.js.map +1 -0
- package/dist/lib/misc/subject.d.ts +1 -0
- package/dist/lib/misc/subject.js +6 -0
- package/dist/lib/misc/subject.js.map +1 -0
- package/dist/{pki → lib/pki}/certificate_manager.d.ts +17 -2
- package/dist/{pki → lib/pki}/certificate_manager.js +140 -70
- package/dist/lib/pki/certificate_manager.js.map +1 -0
- package/dist/{pki → lib/pki}/common.js.map +1 -1
- package/dist/lib/pki/templates/simple_config_template.cnf.d.ts +2 -0
- package/dist/lib/pki/templates/simple_config_template.cnf.js +76 -0
- package/dist/lib/pki/templates/simple_config_template.cnf.js.map +1 -0
- package/dist/lib/pki/toolbox_pfx.js.map +1 -0
- package/dist/lib/toolbox/common.d.ts +47 -0
- package/dist/lib/toolbox/common.js +56 -0
- package/dist/lib/toolbox/common.js.map +1 -0
- package/dist/lib/toolbox/common2.d.ts +3 -0
- package/dist/lib/toolbox/common2.js +62 -0
- package/dist/lib/toolbox/common2.js.map +1 -0
- package/dist/lib/toolbox/config.d.ts +5 -0
- package/dist/lib/toolbox/config.js +31 -0
- package/dist/lib/toolbox/config.js.map +1 -0
- package/dist/lib/toolbox/display.d.ts +4 -0
- package/dist/lib/toolbox/display.js +74 -0
- package/dist/lib/toolbox/display.js.map +1 -0
- package/dist/lib/toolbox/index.d.ts +5 -0
- package/dist/lib/toolbox/index.js +44 -0
- package/dist/lib/toolbox/index.js.map +1 -0
- package/dist/lib/toolbox/with_openssl/_create_random_file.d.ts +5 -0
- package/dist/lib/toolbox/with_openssl/_create_random_file.js +63 -0
- package/dist/lib/toolbox/with_openssl/_create_random_file.js.map +1 -0
- package/dist/lib/toolbox/with_openssl/_env.d.ts +7 -0
- package/dist/lib/toolbox/with_openssl/_env.js +46 -0
- package/dist/lib/toolbox/with_openssl/_env.js.map +1 -0
- package/dist/lib/toolbox/with_openssl/create_certificate_signing_request.d.ts +10 -0
- package/dist/lib/toolbox/with_openssl/create_certificate_signing_request.js +89 -0
- package/dist/lib/toolbox/with_openssl/create_certificate_signing_request.js.map +1 -0
- package/dist/lib/toolbox/with_openssl/create_private_key.d.ts +11 -0
- package/dist/lib/toolbox/with_openssl/create_private_key.js +115 -0
- package/dist/lib/toolbox/with_openssl/create_private_key.js.map +1 -0
- package/dist/lib/toolbox/with_openssl/create_self_signed_certificate.d.ts +5 -0
- package/dist/lib/toolbox/with_openssl/create_self_signed_certificate.js +150 -0
- package/dist/lib/toolbox/with_openssl/create_self_signed_certificate.js.map +1 -0
- package/dist/lib/toolbox/with_openssl/execute_openssl.d.ts +15 -0
- package/dist/lib/toolbox/with_openssl/execute_openssl.js +190 -0
- package/dist/lib/toolbox/with_openssl/execute_openssl.js.map +1 -0
- package/dist/lib/toolbox/with_openssl/index.d.ts +5 -0
- package/dist/lib/toolbox/with_openssl/index.js +22 -0
- package/dist/lib/toolbox/with_openssl/index.js.map +1 -0
- package/dist/{misc → lib/toolbox/with_openssl}/install_prerequisite.js +2 -2
- package/dist/lib/toolbox/with_openssl/install_prerequisite.js.map +1 -0
- package/dist/lib/toolbox/with_openssl/toolbox.d.ts +31 -0
- package/dist/lib/toolbox/with_openssl/toolbox.js +129 -0
- package/dist/lib/toolbox/with_openssl/toolbox.js.map +1 -0
- package/dist/lib/toolbox/without_openssl/create_certificate_signing_request.d.ts +10 -0
- package/dist/lib/toolbox/without_openssl/create_certificate_signing_request.js +83 -0
- package/dist/lib/toolbox/without_openssl/create_certificate_signing_request.js.map +1 -0
- package/dist/lib/toolbox/without_openssl/create_private_key.d.ts +2 -0
- package/dist/lib/toolbox/without_openssl/create_private_key.js +32 -0
- package/dist/lib/toolbox/without_openssl/create_private_key.js.map +1 -0
- package/dist/lib/toolbox/without_openssl/create_self_signed_certificate.d.ts +3 -0
- package/dist/lib/toolbox/without_openssl/create_self_signed_certificate.js +89 -0
- package/dist/lib/toolbox/without_openssl/create_self_signed_certificate.js.map +1 -0
- package/dist/lib/toolbox/without_openssl/index.d.ts +3 -0
- package/dist/lib/toolbox/without_openssl/index.js +42 -0
- package/dist/lib/toolbox/without_openssl/index.js.map +1 -0
- package/dist/test/helpers.d.ts +7 -0
- package/dist/test/helpers.js +56 -0
- package/dist/test/helpers.js.map +1 -0
- package/dist/test/test_certificate_authority.d.ts +1 -0
- package/dist/test/test_certificate_authority.js +265 -0
- package/dist/test/test_certificate_authority.js.map +1 -0
- package/dist/test/test_certificate_manager.d.ts +1 -0
- package/dist/test/test_certificate_manager.js +235 -0
- package/dist/test/test_certificate_manager.js.map +1 -0
- package/dist/test/test_certificate_validation.d.ts +1 -0
- package/dist/test/test_certificate_validation.js +153 -0
- package/dist/test/test_certificate_validation.js.map +1 -0
- package/dist/test/test_concurrency.d.ts +1 -0
- package/dist/test/test_concurrency.js +50 -0
- package/dist/test/test_concurrency.js.map +1 -0
- package/dist/test/test_create_signing_request.d.ts +1 -0
- package/dist/test/test_create_signing_request.js +101 -0
- package/dist/test/test_create_signing_request.js.map +1 -0
- package/dist/test/test_crypto_create_CA.d.ts +1 -0
- package/dist/test/test_crypto_create_CA.js +272 -0
- package/dist/test/test_crypto_create_CA.js.map +1 -0
- package/dist/test/test_ctt_use_cases.d.ts +1 -0
- package/dist/test/test_ctt_use_cases.js +384 -0
- package/dist/test/test_ctt_use_cases.js.map +1 -0
- package/dist/test/test_install_prerequisite.d.ts +1 -0
- package/dist/test/test_install_prerequisite.js +11 -0
- package/dist/test/test_install_prerequisite.js.map +1 -0
- package/dist/test/test_toolbox.d.ts +1 -0
- package/dist/test/test_toolbox.js +45 -0
- package/dist/test/test_toolbox.js.map +1 -0
- package/lib/{pki → ca}/certificate_authority.ts +103 -97
- package/lib/{crypto_create_CA.ts → ca/crypto_create_CA.ts} +31 -30
- package/lib/ca/index.ts +1 -0
- package/lib/index.ts +7 -5
- package/lib/misc/applicationurn.ts +1 -1
- package/lib/misc/subject.ts +1 -141
- package/lib/pki/certificate_manager.ts +109 -43
- package/lib/toolbox/common.ts +116 -0
- package/lib/toolbox/common2.ts +59 -0
- package/lib/toolbox/config.ts +27 -0
- package/lib/toolbox/display.ts +69 -0
- package/lib/toolbox/index.ts +27 -0
- package/lib/toolbox/with_openssl/_create_random_file.ts +60 -0
- package/lib/toolbox/with_openssl/_env.ts +75 -0
- package/lib/toolbox/with_openssl/create_certificate_signing_request.ts +104 -0
- package/lib/toolbox/with_openssl/create_private_key.ts +120 -0
- package/lib/toolbox/with_openssl/create_self_signed_certificate.ts +174 -0
- package/lib/toolbox/with_openssl/execute_openssl.ts +220 -0
- package/lib/toolbox/with_openssl/index.ts +29 -0
- package/lib/{misc → toolbox/with_openssl}/install_prerequisite.ts +2 -2
- package/lib/toolbox/with_openssl/toolbox.ts +144 -0
- package/lib/toolbox/without_openssl/create_certificate_signing_request.ts +81 -0
- package/lib/toolbox/without_openssl/create_private_key.ts +29 -0
- package/lib/toolbox/without_openssl/create_self_signed_certificate.ts +90 -0
- package/lib/toolbox/without_openssl/index.ts +25 -0
- package/package.json +6 -6
- package/tsconfig.json +2 -2
- package/dist/crypto_create_CA.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.js.map +0 -1
- package/dist/misc/applicationurn.js.map +0 -1
- package/dist/misc/hostname.js.map +0 -1
- package/dist/misc/install_prerequisite.js.map +0 -1
- package/dist/misc/subject.d.ts +0 -26
- package/dist/misc/subject.js +0 -122
- package/dist/misc/subject.js.map +0 -1
- package/dist/pki/certificate_authority.js.map +0 -1
- package/dist/pki/certificate_manager.js.map +0 -1
- package/dist/pki/templates/ca_config_template.cnf.js.map +0 -1
- package/dist/pki/templates/simple_config_template.cnf.js.map +0 -1
- package/dist/pki/toolbox.d.ts +0 -160
- package/dist/pki/toolbox.js +0 -700
- package/dist/pki/toolbox.js.map +0 -1
- package/dist/pki/toolbox_pfx.js.map +0 -1
- package/lib/pki/common.ts +0 -5
- package/lib/pki/toolbox.ts +0 -857
- /package/dist/{pki → lib/ca}/templates/ca_config_template.cnf.d.ts +0 -0
- /package/dist/{pki → lib/ca}/templates/ca_config_template.cnf.js +0 -0
- /package/dist/{pki → lib/ca}/templates/simple_config_template.cnf.d.ts +0 -0
- /package/dist/{pki → lib/ca}/templates/simple_config_template.cnf.js +0 -0
- /package/dist/{misc → lib/misc}/applicationurn.d.ts +0 -0
- /package/dist/{misc → lib/misc}/hostname.d.ts +0 -0
- /package/dist/{misc → lib/misc}/hostname.js +0 -0
- /package/dist/{pki → lib/pki}/common.d.ts +0 -0
- /package/dist/{pki → lib/pki}/common.js +0 -0
- /package/dist/{pki → lib/pki}/toolbox_pfx.d.ts +0 -0
- /package/dist/{pki → lib/pki}/toolbox_pfx.js +0 -0
- /package/dist/{misc → lib/toolbox/with_openssl}/install_prerequisite.d.ts +0 -0
- /package/lib/{pki → ca}/templates/ca_config_template.cnf.ts +0 -0
package/.eslintrc.yml
CHANGED
package/bin/crypto_create_CA.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
3
3
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
4
|
-
// node-opcua
|
|
4
|
+
// node-opcua-pki
|
|
5
5
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
6
6
|
// Copyright (c) 2014-2020 - Etienne Rossignon - etienne.rossignon (at) gadz.org
|
|
7
7
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
const _pkg = require("../package.json");
|
|
31
31
|
|
|
32
32
|
// eslint-disable-next-line no-undef
|
|
33
|
-
require("../dist/crypto_create_CA.js").main(process.argv.splice(2), () => {
|
|
33
|
+
require("../dist/lib/ca/crypto_create_CA.js").main(process.argv.splice(2), () => {
|
|
34
34
|
/* empty */
|
|
35
35
|
// xx updateNotifier({pkg}).notify();
|
|
36
36
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Params } from "
|
|
3
|
-
import { Subject, SubjectOptions } from "../misc/subject";
|
|
1
|
+
import { Subject, SubjectOptions } from "node-opcua-crypto";
|
|
2
|
+
import { ErrorCallback, Filename, KeySize, Params } from "../toolbox";
|
|
4
3
|
export declare const defaultSubject = "/C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=NodeOPCUA-CA";
|
|
4
|
+
export declare const configurationFileTemplate: string;
|
|
5
5
|
export interface CertificateAuthorityOptions {
|
|
6
6
|
keySize: KeySize;
|
|
7
7
|
location: string;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CertificateAuthority = exports.defaultSubject = void 0;
|
|
3
|
+
exports.CertificateAuthority = exports.configurationFileTemplate = exports.defaultSubject = void 0;
|
|
4
4
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
5
5
|
// node-opcua
|
|
6
6
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
7
7
|
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org
|
|
8
|
-
// Copyright (c) 2022 - Sterfive.com
|
|
8
|
+
// Copyright (c) 2022-2023 - Sterfive.com
|
|
9
9
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
10
10
|
//
|
|
11
11
|
// This project is licensed under the terms of the MIT license.
|
|
@@ -29,10 +29,14 @@ const async = require("async");
|
|
|
29
29
|
const chalk = require("chalk");
|
|
30
30
|
const fs = require("fs");
|
|
31
31
|
const path = require("path");
|
|
32
|
-
const toolbox_1 = require("./toolbox");
|
|
33
|
-
const subject_1 = require("../misc/subject");
|
|
34
32
|
const node_opcua_crypto_1 = require("node-opcua-crypto");
|
|
33
|
+
const toolbox_1 = require("../toolbox");
|
|
34
|
+
const with_openssl_1 = require("../toolbox/with_openssl");
|
|
35
|
+
const create_private_key_1 = require("../toolbox/without_openssl/create_private_key");
|
|
35
36
|
exports.defaultSubject = "/C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=NodeOPCUA-CA";
|
|
37
|
+
const ca_config_template_cnf_1 = require("./templates/ca_config_template.cnf");
|
|
38
|
+
// tslint:disable-next-line:variable-name
|
|
39
|
+
exports.configurationFileTemplate = ca_config_template_cnf_1.default;
|
|
36
40
|
const config = {
|
|
37
41
|
certificateDir: "INVALID",
|
|
38
42
|
forceCA: false,
|
|
@@ -42,14 +46,15 @@ const n = toolbox_1.make_path;
|
|
|
42
46
|
const q = toolbox_1.quote;
|
|
43
47
|
// convert 'c07b9179' to "192.123.145.121"
|
|
44
48
|
function octetStringToIpAddress(a) {
|
|
45
|
-
return (parseInt(a.
|
|
49
|
+
return (parseInt(a.substring(0, 2), 16).toString() +
|
|
46
50
|
"." +
|
|
47
|
-
parseInt(a.
|
|
51
|
+
parseInt(a.substring(2, 4), 16).toString() +
|
|
48
52
|
"." +
|
|
49
|
-
parseInt(a.
|
|
53
|
+
parseInt(a.substring(4, 6), 16).toString() +
|
|
50
54
|
"." +
|
|
51
|
-
parseInt(a.
|
|
55
|
+
parseInt(a.substring(6, 8), 16).toString());
|
|
52
56
|
}
|
|
57
|
+
assert(octetStringToIpAddress("c07b9179") === "192.123.145.121");
|
|
53
58
|
function construct_CertificateAuthority(certificateAuthority, callback) {
|
|
54
59
|
// create the CA directory store
|
|
55
60
|
// create the CA directory store
|
|
@@ -103,7 +108,9 @@ function construct_CertificateAuthority(certificateAuthority, callback) {
|
|
|
103
108
|
return callback();
|
|
104
109
|
}
|
|
105
110
|
// tslint:disable:no-empty
|
|
106
|
-
(0, toolbox_1.displayTitle)("Create Certificate Authority (CA)", (_err) => {
|
|
111
|
+
(0, toolbox_1.displayTitle)("Create Certificate Authority (CA)", (_err) => {
|
|
112
|
+
/** */
|
|
113
|
+
});
|
|
107
114
|
const indexFileAttr = path.join(caRootDir, "index.txt.attr");
|
|
108
115
|
if (!fs.existsSync(indexFileAttr)) {
|
|
109
116
|
fs.writeFileSync(indexFileAttr, "unique_subject = no");
|
|
@@ -111,50 +118,53 @@ function construct_CertificateAuthority(certificateAuthority, callback) {
|
|
|
111
118
|
const caConfigFile = certificateAuthority.configFile;
|
|
112
119
|
// eslint-disable-next-line no-constant-condition
|
|
113
120
|
if (1 || !fs.existsSync(caConfigFile)) {
|
|
114
|
-
let data =
|
|
121
|
+
let data = exports.configurationFileTemplate; // inlineText(configurationFile);
|
|
115
122
|
data = data.replace(/%%ROOT_FOLDER%%/, (0, toolbox_1.make_path)(caRootDir));
|
|
116
123
|
fs.writeFileSync(caConfigFile, data);
|
|
117
124
|
}
|
|
118
125
|
// http://www.akadia.com/services/ssh_test_certificate.html
|
|
119
|
-
const subjectOpt =
|
|
126
|
+
const subjectOpt = ' -subj "' + subject.toString() + '" ';
|
|
120
127
|
const options = { cwd: caRootDir };
|
|
121
|
-
(0,
|
|
122
|
-
const configFile = (0,
|
|
128
|
+
(0, with_openssl_1.processAltNames)({});
|
|
129
|
+
const configFile = (0, with_openssl_1.generateStaticConfig)("conf/caconfig.cnf", options);
|
|
123
130
|
const configOption = " -config " + q(n(configFile));
|
|
124
131
|
const keySize = certificateAuthority.keySize;
|
|
125
|
-
const
|
|
132
|
+
const privateKeyFilename = path.join(caRootDir, "private/cakey.pem");
|
|
133
|
+
const csrFilename = path.join(caRootDir, "private/cakey.csr");
|
|
126
134
|
const tasks = [
|
|
127
|
-
(callback) => (0, toolbox_1.displayTitle)("Creating random file random.rnd", callback),
|
|
128
|
-
(callback) => (0, toolbox_1.createRandomFileIfNotExist)(randomFile, options, callback),
|
|
129
135
|
(callback) => (0, toolbox_1.displayTitle)("Generate the CA private Key - " + keySize, callback),
|
|
130
136
|
// The first step is to create your RSA Private Key.
|
|
131
137
|
// This key is a 1025,2048,3072 or 2038 bit RSA key which is encrypted using
|
|
132
138
|
// Triple-DES and stored in a PEM format so that it is readable as ASCII text.
|
|
133
|
-
(callback) => (0,
|
|
139
|
+
(callback) => (0, create_private_key_1.createPrivateKey)(privateKeyFilename, keySize, callback),
|
|
134
140
|
(callback) => (0, toolbox_1.displayTitle)("Generate a certificate request for the CA key", callback),
|
|
135
141
|
// Once the private key is generated a Certificate Signing Request can be generated.
|
|
136
142
|
// The CSR is then used in one of two ways. Ideally, the CSR will be sent to a Certificate Authority, such as
|
|
137
143
|
// Thawte or Verisign who will verify the identity of the requestor and issue a signed certificate.
|
|
138
144
|
// The second option is to self-sign the CSR, which will be demonstrated in the next section
|
|
139
|
-
(callback) => (0,
|
|
145
|
+
(callback) => (0, with_openssl_1.execute_openssl)("req -new" +
|
|
140
146
|
" -sha256 " +
|
|
141
147
|
" -text " +
|
|
142
148
|
" -extensions v3_ca" +
|
|
143
149
|
configOption +
|
|
144
|
-
" -key
|
|
145
|
-
|
|
150
|
+
" -key " +
|
|
151
|
+
q(n(privateKeyFilename)) +
|
|
152
|
+
" -out " +
|
|
153
|
+
q(n(csrFilename)) +
|
|
154
|
+
" " +
|
|
146
155
|
subjectOpt, options, callback),
|
|
147
156
|
// xx // Step 3: Remove Passphrase from Key
|
|
148
157
|
// xx execute("cp private/cakey.pem private/cakey.pem.org");
|
|
149
158
|
// xx execute(openssl_path + " rsa -in private/cakey.pem.org -out private/cakey.pem -passin pass:"+paraphrase);
|
|
150
159
|
(callback) => (0, toolbox_1.displayTitle)("Generate CA Certificate (self-signed)", callback),
|
|
151
|
-
(callback) => (0,
|
|
160
|
+
(callback) => (0, with_openssl_1.execute_openssl)(" x509 -sha256 -req -days 3650 " +
|
|
152
161
|
" -text " +
|
|
153
162
|
" -extensions v3_ca" +
|
|
154
163
|
" -extfile " +
|
|
155
164
|
q(n(configFile)) +
|
|
156
165
|
" -in private/cakey.csr " +
|
|
157
|
-
" -signkey
|
|
166
|
+
" -signkey " +
|
|
167
|
+
q(n(privateKeyFilename)) +
|
|
158
168
|
" -out public/cacert.pem", options, callback),
|
|
159
169
|
(callback) => (0, toolbox_1.displaySubtitle)("generate initial CRL (Certificate Revocation List)", callback),
|
|
160
170
|
(callback) => regenerateCrl(certificateAuthority.revocationList, configOption, options, callback),
|
|
@@ -167,10 +177,10 @@ function regenerateCrl(revocationList, configOption, options, callback) {
|
|
|
167
177
|
(callback) => (0, toolbox_1.displaySubtitle)("regenerate CRL (Certificate Revocation List)", callback),
|
|
168
178
|
(callback) =>
|
|
169
179
|
// produce a CRL in PEM format
|
|
170
|
-
(0,
|
|
171
|
-
(callback) => (0,
|
|
180
|
+
(0, with_openssl_1.execute_openssl)("ca -gencrl " + configOption + " -out crl/revocation_list.crl", options, callback),
|
|
181
|
+
(callback) => (0, with_openssl_1.execute_openssl)("crl " + " -in crl/revocation_list.crl -out crl/revocation_list.der " + " -outform der", options, callback),
|
|
172
182
|
(callback) => (0, toolbox_1.displaySubtitle)("Display (Certificate Revocation List)", callback),
|
|
173
|
-
(callback) => (0,
|
|
183
|
+
(callback) => (0, with_openssl_1.execute_openssl)("crl " + " -in " + q(n(revocationList)) + " -text " + " -noout", options, callback),
|
|
174
184
|
];
|
|
175
185
|
async.series(tasks, callback);
|
|
176
186
|
}
|
|
@@ -180,7 +190,7 @@ class CertificateAuthority {
|
|
|
180
190
|
assert(Object.prototype.hasOwnProperty.call(options, "keySize"));
|
|
181
191
|
this.location = options.location;
|
|
182
192
|
this.keySize = options.keySize || 2048;
|
|
183
|
-
this.subject = new
|
|
193
|
+
this.subject = new node_opcua_crypto_1.Subject(options.subject || exports.defaultSubject);
|
|
184
194
|
}
|
|
185
195
|
get rootDir() {
|
|
186
196
|
return this.location;
|
|
@@ -249,20 +259,20 @@ class CertificateAuthority {
|
|
|
249
259
|
}
|
|
250
260
|
(0, toolbox_1.adjustDate)(params);
|
|
251
261
|
(0, toolbox_1.adjustApplicationUri)(params);
|
|
252
|
-
(0,
|
|
262
|
+
(0, with_openssl_1.processAltNames)(params);
|
|
253
263
|
const csrFile = certificateFile + "_csr";
|
|
254
264
|
assert(csrFile);
|
|
255
|
-
const configFile = (0,
|
|
265
|
+
const configFile = (0, with_openssl_1.generateStaticConfig)(this.configFile);
|
|
256
266
|
const options = {
|
|
257
267
|
cwd: this.rootDir,
|
|
258
268
|
openssl_conf: (0, toolbox_1.make_path)(configFile),
|
|
259
269
|
};
|
|
260
270
|
const configOption = "";
|
|
261
|
-
const subject = params.subject ? new
|
|
271
|
+
const subject = params.subject ? new node_opcua_crypto_1.Subject(params.subject).toString() : "";
|
|
262
272
|
const subjectOptions = subject && subject.length > 1 ? " -subj " + subject + " " : "";
|
|
263
273
|
const tasks = [];
|
|
264
274
|
tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- the certificate signing request", callback));
|
|
265
|
-
tasks.push((callback) => (0,
|
|
275
|
+
tasks.push((callback) => (0, with_openssl_1.execute_openssl)("req " +
|
|
266
276
|
" -new -sha256 -text " +
|
|
267
277
|
configOption +
|
|
268
278
|
subjectOptions +
|
|
@@ -271,22 +281,22 @@ class CertificateAuthority {
|
|
|
271
281
|
" -out " +
|
|
272
282
|
q(n(csrFile)), options, callback));
|
|
273
283
|
tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- creating the self-signed certificate", callback));
|
|
274
|
-
tasks.push((callback) => (0,
|
|
284
|
+
tasks.push((callback) => (0, with_openssl_1.execute_openssl)("ca " +
|
|
275
285
|
" -selfsign " +
|
|
276
286
|
" -keyfile " +
|
|
277
287
|
q(n(privateKey)) +
|
|
278
288
|
" -startdate " +
|
|
279
|
-
(0,
|
|
289
|
+
(0, with_openssl_1.x509Date)(params.startDate) +
|
|
280
290
|
" -enddate " +
|
|
281
|
-
(0,
|
|
291
|
+
(0, with_openssl_1.x509Date)(params.endDate) +
|
|
282
292
|
" -batch -out " +
|
|
283
293
|
q(n(certificateFile)) +
|
|
284
294
|
" -in " +
|
|
285
295
|
q(n(csrFile)), options, callback));
|
|
286
296
|
tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- dump the certificate for a check", callback));
|
|
287
|
-
tasks.push((callback) => (0,
|
|
297
|
+
tasks.push((callback) => (0, with_openssl_1.execute_openssl)("x509 -in " + q(n(certificateFile)) + " -dates -fingerprint -purpose -noout", {}, callback));
|
|
288
298
|
tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- verify self-signed certificate", callback));
|
|
289
|
-
tasks.push((callback) => (0,
|
|
299
|
+
tasks.push((callback) => (0, with_openssl_1.execute_openssl_no_failure)("verify -verbose -CAfile " + q(n(certificateFile)) + " " + q(n(certificateFile)), options, callback));
|
|
290
300
|
tasks.push((callback) => fs.unlink(csrFile, callback));
|
|
291
301
|
async.series(tasks, (err) => {
|
|
292
302
|
callback(err);
|
|
@@ -304,14 +314,14 @@ class CertificateAuthority {
|
|
|
304
314
|
"certificateHold",
|
|
305
315
|
"removeFromCRL",
|
|
306
316
|
];
|
|
307
|
-
const configFile = (0,
|
|
317
|
+
const configFile = (0, with_openssl_1.generateStaticConfig)("conf/caconfig.cnf", { cwd: this.rootDir });
|
|
308
318
|
const options = {
|
|
309
319
|
cwd: this.rootDir,
|
|
310
320
|
openssl_conf: (0, toolbox_1.make_path)(configFile),
|
|
311
321
|
};
|
|
312
|
-
(0,
|
|
322
|
+
(0, with_openssl_1.setEnv)("ALTNAME", "");
|
|
313
323
|
const randomFile = path.join(this.rootDir, "random.rnd");
|
|
314
|
-
(0,
|
|
324
|
+
(0, with_openssl_1.setEnv)("RANDFILE", randomFile);
|
|
315
325
|
// // tslint:disable-next-line:no-string-literal
|
|
316
326
|
// if (!fs.existsSync((process.env as any)["OPENSSL_CONF"])) {
|
|
317
327
|
// throw new Error("Cannot find OPENSSL_CONF");
|
|
@@ -321,17 +331,15 @@ class CertificateAuthority {
|
|
|
321
331
|
assert(crlReasons.indexOf(reason) >= 0);
|
|
322
332
|
const tasks = [
|
|
323
333
|
(callback) => (0, toolbox_1.displayTitle)("Revoking certificate " + certificate, callback),
|
|
324
|
-
(callback) => (0, toolbox_1.displaySubtitle)("Make sure random file exists" + randomFile, callback),
|
|
325
|
-
(callback) => (0, toolbox_1.createRandomFileIfNotExist)(randomFile, {}, callback),
|
|
326
334
|
(callback) => (0, toolbox_1.displaySubtitle)("Revoke certificate", callback),
|
|
327
335
|
(callback) => {
|
|
328
|
-
(0,
|
|
336
|
+
(0, with_openssl_1.execute_openssl_no_failure)("ca -verbose " + configOption + " -revoke " + q(certificate) + " -crl_reason " + reason, options, callback);
|
|
329
337
|
},
|
|
330
338
|
// regenerate CRL (Certificate Revocation List)
|
|
331
339
|
(callback) => regenerateCrl(this.revocationList, configOption, options, callback),
|
|
332
340
|
(callback) => (0, toolbox_1.displaySubtitle)("Verify that certificate is revoked ", callback),
|
|
333
341
|
(callback) => {
|
|
334
|
-
(0,
|
|
342
|
+
(0, with_openssl_1.execute_openssl_no_failure)("verify -verbose" +
|
|
335
343
|
// configOption +
|
|
336
344
|
" -CRLfile " +
|
|
337
345
|
q(n(this.revocationList)) +
|
|
@@ -344,10 +352,10 @@ class CertificateAuthority {
|
|
|
344
352
|
},
|
|
345
353
|
// produce CRL in DER format
|
|
346
354
|
(callback) => (0, toolbox_1.displaySubtitle)("Produce CRL in DER form ", callback),
|
|
347
|
-
(callback) => (0,
|
|
355
|
+
(callback) => (0, with_openssl_1.execute_openssl)("crl " + " -in " + q(n(this.revocationList)) + " -out " + "crl/revocation_list.der " + " -outform der", options, callback),
|
|
348
356
|
// produce CRL in PEM format with text
|
|
349
357
|
(callback) => (0, toolbox_1.displaySubtitle)("Produce CRL in PEM form ", callback),
|
|
350
|
-
(callback) => (0,
|
|
358
|
+
(callback) => (0, with_openssl_1.execute_openssl)("crl " +
|
|
351
359
|
" -in " +
|
|
352
360
|
q(n(this.revocationList)) +
|
|
353
361
|
" -out " +
|
|
@@ -362,7 +370,7 @@ class CertificateAuthority {
|
|
|
362
370
|
if (!callback) {
|
|
363
371
|
throw new Error("Internal Error");
|
|
364
372
|
}
|
|
365
|
-
(0,
|
|
373
|
+
(0, with_openssl_1.ensure_openssl_installed)(() => {
|
|
366
374
|
try {
|
|
367
375
|
assert(fs.existsSync(certificateSigningRequestFilename));
|
|
368
376
|
assert(typeof callback === "function");
|
|
@@ -371,7 +379,7 @@ class CertificateAuthority {
|
|
|
371
379
|
}
|
|
372
380
|
(0, toolbox_1.adjustDate)(params);
|
|
373
381
|
(0, toolbox_1.adjustApplicationUri)(params);
|
|
374
|
-
(0,
|
|
382
|
+
(0, with_openssl_1.processAltNames)(params);
|
|
375
383
|
const options = { cwd: this.rootDir };
|
|
376
384
|
let configFile;
|
|
377
385
|
const tasks = [];
|
|
@@ -400,26 +408,26 @@ class CertificateAuthority {
|
|
|
400
408
|
dns,
|
|
401
409
|
ip,
|
|
402
410
|
};
|
|
403
|
-
(0,
|
|
404
|
-
configFile = (0,
|
|
411
|
+
(0, with_openssl_1.processAltNames)(params);
|
|
412
|
+
configFile = (0, with_openssl_1.generateStaticConfig)("conf/caconfig.cnf", options);
|
|
405
413
|
callback();
|
|
406
414
|
});
|
|
407
415
|
tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- then we ask the authority to sign the certificate signing request", callback));
|
|
408
416
|
tasks.push((callback) => {
|
|
409
417
|
const configOption = " -config " + configFile;
|
|
410
|
-
(0,
|
|
418
|
+
(0, with_openssl_1.execute_openssl)("ca " +
|
|
411
419
|
configOption +
|
|
412
420
|
" -startdate " +
|
|
413
|
-
(0,
|
|
421
|
+
(0, with_openssl_1.x509Date)(params.startDate) +
|
|
414
422
|
" -enddate " +
|
|
415
|
-
(0,
|
|
423
|
+
(0, with_openssl_1.x509Date)(params.endDate) +
|
|
416
424
|
" -batch -out " +
|
|
417
425
|
q(n(certificate)) +
|
|
418
426
|
" -in " +
|
|
419
427
|
q(n(certificateSigningRequestFilename)), options, callback);
|
|
420
428
|
});
|
|
421
429
|
tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- dump the certificate for a check", callback));
|
|
422
|
-
tasks.push((callback) => (0,
|
|
430
|
+
tasks.push((callback) => (0, with_openssl_1.execute_openssl)("x509 -in " + q(n(certificate)) + " -dates -fingerprint -purpose -noout", options, callback));
|
|
423
431
|
tasks.push((callback) => (0, toolbox_1.displaySubtitle)("- construct CA certificate with CRL", callback));
|
|
424
432
|
tasks.push((callback) => {
|
|
425
433
|
this.constructCACertificateWithCRL(callback);
|
|
@@ -455,10 +463,10 @@ class CertificateAuthority {
|
|
|
455
463
|
// istanbul ignore next
|
|
456
464
|
if (isImplemented) {
|
|
457
465
|
const options = { cwd: this.rootDir };
|
|
458
|
-
const configFile = (0,
|
|
459
|
-
(0,
|
|
466
|
+
const configFile = (0, with_openssl_1.generateStaticConfig)("conf/caconfig.cnf", options);
|
|
467
|
+
(0, with_openssl_1.setEnv)("OPENSSL_CONF", (0, toolbox_1.make_path)(configFile));
|
|
460
468
|
const configOption = " -config " + configFile;
|
|
461
|
-
(0,
|
|
469
|
+
(0, with_openssl_1.execute_openssl_no_failure)("verify -verbose " + " -CAfile " + q(n(this.caCertificateWithCrl)) + " " + q(n(certificate)), options, (err) => {
|
|
462
470
|
callback(err ? err : undefined);
|
|
463
471
|
});
|
|
464
472
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certificate_authority.js","sourceRoot":"","sources":["../../../lib/ca/certificate_authority.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ErrorCallback } from "
|
|
1
|
+
import { ErrorCallback } from "../toolbox";
|
|
2
2
|
export declare function main(argumentsList: string, _done?: ErrorCallback): void;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// node-opcua
|
|
5
5
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
6
6
|
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org
|
|
7
|
-
// Copyright (c) 2022 - Sterfive.com
|
|
7
|
+
// Copyright (c) 2022-2023 - Sterfive.com
|
|
8
8
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
9
9
|
//
|
|
10
10
|
// This project is licensed under the terms of the MIT license.
|
|
@@ -45,19 +45,22 @@ const fs = require("fs");
|
|
|
45
45
|
const path = require("path");
|
|
46
46
|
const os = require("os");
|
|
47
47
|
const util_1 = require("util");
|
|
48
|
-
const
|
|
49
|
-
const hostname_1 = require("./misc/hostname");
|
|
50
|
-
const subject_1 = require("./misc/subject");
|
|
51
|
-
const certificate_authority_1 = require("./pki/certificate_authority");
|
|
52
|
-
const certificate_manager_1 = require("./pki/certificate_manager");
|
|
53
|
-
const toolbox_1 = require("./pki/toolbox");
|
|
48
|
+
const node_opcua_crypto_1 = require("node-opcua-crypto");
|
|
54
49
|
// see https://github.com/yargs/yargs/issues/781
|
|
55
50
|
const commands = require("yargs");
|
|
51
|
+
const applicationurn_1 = require("../misc/applicationurn");
|
|
52
|
+
const hostname_1 = require("../misc/hostname");
|
|
53
|
+
const certificate_authority_1 = require("./certificate_authority");
|
|
54
|
+
const certificate_manager_1 = require("../pki/certificate_manager");
|
|
55
|
+
const toolbox_1 = require("../toolbox");
|
|
56
|
+
const with_openssl_1 = require("../toolbox/with_openssl");
|
|
57
|
+
const without_openssl_1 = require("../toolbox/without_openssl");
|
|
58
|
+
const with_openssl_2 = require("../toolbox/with_openssl");
|
|
56
59
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
57
60
|
const { hideBin } = require("yargs/helpers");
|
|
58
61
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
59
62
|
const argv = require("yargs/yargs")(hideBin(process.argv));
|
|
60
|
-
const epilog = "Copyright (c) sterfive - node-opcua - 2017-
|
|
63
|
+
const epilog = "Copyright (c) sterfive - node-opcua - 2017-2023";
|
|
61
64
|
// ------------------------------------------------- some useful dates
|
|
62
65
|
function get_offset_date(date, nbDays) {
|
|
63
66
|
const d = new Date(date.getTime());
|
|
@@ -211,13 +214,13 @@ function readConfiguration(argv) {
|
|
|
211
214
|
// see http://stackoverflow.com/questions/94445/using-openssl-what-does-unable-to-write-random-state-mean
|
|
212
215
|
// set random file to be random.rnd in the same folder as the g_config file
|
|
213
216
|
const defaultRandomFile = path.join(path.dirname(default_config), "random.rnd");
|
|
214
|
-
(0,
|
|
217
|
+
(0, with_openssl_1.setEnv)("RANDFILE", defaultRandomFile);
|
|
215
218
|
/* eslint global-require: 0*/
|
|
216
219
|
gLocalConfig = require(default_config);
|
|
217
|
-
gLocalConfig.subject = new
|
|
220
|
+
gLocalConfig.subject = new node_opcua_crypto_1.Subject(gLocalConfig.subject || "");
|
|
218
221
|
// if subject is provided on the command line , it has hight priority
|
|
219
222
|
if (argv.subject) {
|
|
220
|
-
gLocalConfig.subject = new
|
|
223
|
+
gLocalConfig.subject = new node_opcua_crypto_1.Subject(argv.subject);
|
|
221
224
|
}
|
|
222
225
|
// istanbul ignore next
|
|
223
226
|
if (!gLocalConfig.subject.commonName) {
|
|
@@ -377,9 +380,10 @@ function createDefaultCertificate(base_name, prefix, key_length, applicationUri,
|
|
|
377
380
|
configFile,
|
|
378
381
|
dns,
|
|
379
382
|
ip,
|
|
383
|
+
purpose: node_opcua_crypto_1.CertificatePurpose.ForApplication
|
|
380
384
|
};
|
|
381
385
|
// create CSR
|
|
382
|
-
yield (0,
|
|
386
|
+
yield (0, with_openssl_2.createCertificateSigningRequestAsync)(certificateSigningRequestFile, params);
|
|
383
387
|
return yield g_certificateAuthority.signCertificateRequest(certificate, certificateSigningRequestFile, {
|
|
384
388
|
applicationUri,
|
|
385
389
|
dns,
|
|
@@ -412,14 +416,14 @@ function createDefaultCertificate(base_name, prefix, key_length, applicationUri,
|
|
|
412
416
|
return;
|
|
413
417
|
}
|
|
414
418
|
else {
|
|
415
|
-
yield (0, util_1.promisify)(
|
|
419
|
+
yield (0, util_1.promisify)(without_openssl_1.createPrivateKey)(privateKey, keyLength);
|
|
416
420
|
}
|
|
417
421
|
});
|
|
418
422
|
}
|
|
419
423
|
(0, toolbox_1.displaySubtitle)(" create private key :" + private_key_file);
|
|
420
424
|
yield createPrivateKeyIfNotExist(private_key_file, key_length);
|
|
421
425
|
(0, toolbox_1.displaySubtitle)(" extract public key " + public_key_file + " from private key ");
|
|
422
|
-
yield (0, util_1.promisify)(
|
|
426
|
+
yield (0, util_1.promisify)(with_openssl_1.getPublicKeyFromPrivateKey)(private_key_file, public_key_file);
|
|
423
427
|
(0, toolbox_1.displaySubtitle)(" create Certificate " + certificate_file);
|
|
424
428
|
yield createCertificateIfNotExist(certificate_file, private_key_file, applicationUri, yesterday, 365);
|
|
425
429
|
(0, toolbox_1.displaySubtitle)(" create self signed Certificate " + self_signed_certificate_file);
|
|
@@ -525,7 +529,7 @@ argv
|
|
|
525
529
|
return local_argv;
|
|
526
530
|
}, (local_argv) => {
|
|
527
531
|
wrap(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
528
|
-
yield (0, util_1.promisify)(
|
|
532
|
+
yield (0, util_1.promisify)(with_openssl_1.ensure_openssl_installed)();
|
|
529
533
|
(0, toolbox_1.displayChapter)("Create Demo certificates");
|
|
530
534
|
(0, toolbox_1.displayTitle)("reading configuration");
|
|
531
535
|
yield readConfiguration(local_argv);
|
|
@@ -560,7 +564,7 @@ argv
|
|
|
560
564
|
},
|
|
561
565
|
/*handler*/ (local_argv) => {
|
|
562
566
|
wrap(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
563
|
-
yield (0, util_1.promisify)(
|
|
567
|
+
yield (0, util_1.promisify)(with_openssl_1.ensure_openssl_installed)();
|
|
564
568
|
yield readConfiguration(local_argv);
|
|
565
569
|
yield construct_CertificateAuthority(local_argv.subject);
|
|
566
570
|
}));
|
|
@@ -649,7 +653,7 @@ argv
|
|
|
649
653
|
yield construct_CertificateManager();
|
|
650
654
|
(0, toolbox_1.displaySubtitle)(" create self signed Certificate " + gLocalConfig.outputFile);
|
|
651
655
|
let subject = local_argv.subject && local_argv.subject.length > 1
|
|
652
|
-
? new
|
|
656
|
+
? new node_opcua_crypto_1.Subject(local_argv.subject)
|
|
653
657
|
: gLocalConfig.subject || "";
|
|
654
658
|
subject = JSON.parse(JSON.stringify(subject));
|
|
655
659
|
const params = {
|
|
@@ -792,7 +796,7 @@ argv
|
|
|
792
796
|
default: "my_certificate_signing_request.csr",
|
|
793
797
|
type: "string",
|
|
794
798
|
demandOption: true,
|
|
795
|
-
description: "the csr"
|
|
799
|
+
description: "the csr",
|
|
796
800
|
},
|
|
797
801
|
output: {
|
|
798
802
|
default: "my_certificate.pem",
|
|
@@ -837,7 +841,7 @@ argv
|
|
|
837
841
|
/** */
|
|
838
842
|
}, (yargs) => {
|
|
839
843
|
wrap(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
840
|
-
const data = yield (0, util_1.promisify)(
|
|
844
|
+
const data = yield (0, util_1.promisify)(with_openssl_1.dumpCertificate)(yargs.certificateFile);
|
|
841
845
|
console.log(data);
|
|
842
846
|
}));
|
|
843
847
|
})
|
|
@@ -845,7 +849,7 @@ argv
|
|
|
845
849
|
/** */
|
|
846
850
|
}, (yargs) => {
|
|
847
851
|
wrap(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
848
|
-
yield (0, util_1.promisify)(
|
|
852
|
+
yield (0, util_1.promisify)(with_openssl_1.toDer)(argv.pemCertificate);
|
|
849
853
|
}));
|
|
850
854
|
})
|
|
851
855
|
.command("fingerprint <certificateFile>", "print the certificate fingerprint", () => {
|
|
@@ -853,7 +857,7 @@ argv
|
|
|
853
857
|
}, (local_argv) => {
|
|
854
858
|
wrap(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
855
859
|
const certificate = local_argv.certificateFile;
|
|
856
|
-
const data = yield (0, util_1.promisify)(
|
|
860
|
+
const data = yield (0, util_1.promisify)(with_openssl_1.fingerprint)(certificate);
|
|
857
861
|
if (!data)
|
|
858
862
|
return;
|
|
859
863
|
const s = data.split("=")[1].split(":").join("").trim();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto_create_CA.js","sourceRoot":"","sources":["../../../lib/ca/crypto_create_CA.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./certificate_authority";
|