node-opcua-pki 3.1.0 → 3.1.2
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.
|
@@ -57,6 +57,7 @@ export declare enum VerificationStatus {
|
|
|
57
57
|
/** Validation OK. */
|
|
58
58
|
Good = "Good"
|
|
59
59
|
}
|
|
60
|
+
export declare function findIssuerCertificateInChain(certificate: Certificate, chain: Certificate[]): Certificate | null;
|
|
60
61
|
export declare enum CertificateManagerState {
|
|
61
62
|
Uninitialized = 0,
|
|
62
63
|
Initializing = 1,
|
|
@@ -122,6 +123,20 @@ export declare class CertificateManager {
|
|
|
122
123
|
createCertificateRequest(params: CreateSelfSignCertificateParam, callback: (err: Error | null, certificateSigningRequestFilename?: string) => void): void;
|
|
123
124
|
addIssuer(certificate: DER, validate?: boolean, addInTrustList?: boolean): Promise<VerificationStatus>;
|
|
124
125
|
addRevocationList(crl: CertificateRevocationList): Promise<VerificationStatus>;
|
|
126
|
+
/**
|
|
127
|
+
* find the issuer certificate among the trusted issuer certificates.
|
|
128
|
+
*
|
|
129
|
+
* The findIssuerCertificate method is an asynchronous method that attempts to find
|
|
130
|
+
* the issuer certificate for a given certificate from the list of issuer certificate declared in the PKI
|
|
131
|
+
*
|
|
132
|
+
* - If the certificate is self-signed, it returns the certificate itself.
|
|
133
|
+
*
|
|
134
|
+
* - If the certificate has no extension 3, it is assumed to be generated by an old system, and a null value is returned.
|
|
135
|
+
*
|
|
136
|
+
* - the method checks both issuer and trusted certificates and returns the appropriate issuercertificate,
|
|
137
|
+
* if found. If multiple matching certificates are found, a warning is logged to the console.
|
|
138
|
+
*
|
|
139
|
+
*/
|
|
125
140
|
findIssuerCertificate(certificate: Certificate): Promise<Certificate | null>;
|
|
126
141
|
/**
|
|
127
142
|
* @internal
|
|
@@ -33,7 +33,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
33
33
|
});
|
|
34
34
|
};
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.CertificateManager = exports.CertificateManagerState = exports.VerificationStatus = void 0;
|
|
36
|
+
exports.CertificateManager = exports.CertificateManagerState = exports.findIssuerCertificateInChain = exports.VerificationStatus = void 0;
|
|
37
37
|
const assert = require("assert");
|
|
38
38
|
const async = require("async");
|
|
39
39
|
const chalk = require("chalk");
|
|
@@ -120,6 +120,39 @@ function isSelfSigned3(certificate) {
|
|
|
120
120
|
const info = (0, node_opcua_crypto_1.exploreCertificate)(certificate);
|
|
121
121
|
return isSelfSigned2(info);
|
|
122
122
|
}
|
|
123
|
+
function findIssuerCertificateInChain(certificate, chain) {
|
|
124
|
+
var _a, _b;
|
|
125
|
+
if (!certificate) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const certInfo = (0, node_opcua_crypto_1.exploreCertificate)(certificate);
|
|
129
|
+
// istanbul ignore next
|
|
130
|
+
if (isSelfSigned2(certInfo)) {
|
|
131
|
+
// the certificate is self signed so is it's own issuer.
|
|
132
|
+
return certificate;
|
|
133
|
+
}
|
|
134
|
+
const wantedIssuerKey = (_b = (_a = certInfo.tbsCertificate.extensions) === null || _a === void 0 ? void 0 : _a.authorityKeyIdentifier) === null || _b === void 0 ? void 0 : _b.keyIdentifier;
|
|
135
|
+
// istanbul ignore next
|
|
136
|
+
if (!wantedIssuerKey) {
|
|
137
|
+
// Certificate has no extension 3 ! the certificate might have been generated by an old system
|
|
138
|
+
(0, toolbox_1.debugLog)("Certificate has no extension 3");
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
const potentialIssuers = chain.filter((c) => {
|
|
142
|
+
const info = (0, node_opcua_crypto_1.exploreCertificate)(c);
|
|
143
|
+
return info.tbsCertificate.extensions && info.tbsCertificate.extensions.subjectKeyIdentifier === wantedIssuerKey;
|
|
144
|
+
return true;
|
|
145
|
+
});
|
|
146
|
+
if (potentialIssuers.length === 1) {
|
|
147
|
+
return potentialIssuers[0];
|
|
148
|
+
}
|
|
149
|
+
if (potentialIssuers.length > 1) {
|
|
150
|
+
(0, toolbox_1.debugLog)("findIssuerCertificateInChain: certificate is not self-signed but has several issuers");
|
|
151
|
+
return potentialIssuers[0];
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
exports.findIssuerCertificateInChain = findIssuerCertificateInChain;
|
|
123
156
|
var CertificateManagerState;
|
|
124
157
|
(function (CertificateManagerState) {
|
|
125
158
|
CertificateManagerState[CertificateManagerState["Uninitialized"] = 0] = "Uninitialized";
|
|
@@ -258,7 +291,7 @@ class CertificateManager {
|
|
|
258
291
|
});
|
|
259
292
|
}
|
|
260
293
|
_innerVerifyCertificateAsync(certificate, isIssuer, level) {
|
|
261
|
-
var _a, _b;
|
|
294
|
+
var _a, _b, _c, _d, _e;
|
|
262
295
|
return __awaiter(this, void 0, void 0, function* () {
|
|
263
296
|
if (level >= 5) {
|
|
264
297
|
// maximum level of certificate in chain reached !
|
|
@@ -277,12 +310,20 @@ class CertificateManager {
|
|
|
277
310
|
const isSelfSigned = isSelfSigned2(info);
|
|
278
311
|
(0, toolbox_1.debugLog)("Is the Certificate self-signed ?", isSelfSigned);
|
|
279
312
|
if (!isSelfSigned) {
|
|
280
|
-
|
|
281
|
-
|
|
313
|
+
(0, toolbox_1.debugLog)("Is issuer found in the list of know issuers ?", "\n subjectKeyIdentifier = ", (_c = info.tbsCertificate.extensions) === null || _c === void 0 ? void 0 : _c.subjectKeyIdentifier, "\n authorityKeyIdentifier = ", (_e = (_d = info.tbsCertificate.extensions) === null || _d === void 0 ? void 0 : _d.authorityKeyIdentifier) === null || _e === void 0 ? void 0 : _e.keyIdentifier);
|
|
314
|
+
let issuerCertificate = yield this.findIssuerCertificate(chain[0]);
|
|
282
315
|
if (!issuerCertificate) {
|
|
283
|
-
//
|
|
284
|
-
//
|
|
285
|
-
|
|
316
|
+
// the issuer has not been found in the list of trusted certificate
|
|
317
|
+
// may be the issuer certificate is in the chain itself ?
|
|
318
|
+
issuerCertificate = findIssuerCertificateInChain(chain[0], chain);
|
|
319
|
+
if (!issuerCertificate) {
|
|
320
|
+
(0, toolbox_1.debugLog)(" the issuer has not been found in the chain itself nor in the issuer.cert list => the chain is incomplete!");
|
|
321
|
+
return VerificationStatus.BadCertificateChainIncomplete;
|
|
322
|
+
}
|
|
323
|
+
(0, toolbox_1.debugLog)(" the issuer certificate has been found in the chain itself ! the chain is complete !");
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
(0, toolbox_1.debugLog)(" the issuer certificate has been found in the issuer.cert folder !");
|
|
286
327
|
}
|
|
287
328
|
const issuerStatus = yield this._innerVerifyCertificateAsync(issuerCertificate, true, level + 1);
|
|
288
329
|
if (issuerStatus === VerificationStatus.BadCertificateRevocationUnknown) {
|
|
@@ -297,6 +338,10 @@ class CertificateManager {
|
|
|
297
338
|
// the issuer must have valid dates ....
|
|
298
339
|
return VerificationStatus.BadCertificateIssuerTimeInvalid;
|
|
299
340
|
}
|
|
341
|
+
if (issuerStatus == VerificationStatus.BadCertificateUntrusted) {
|
|
342
|
+
(0, toolbox_1.debugLog)("warning issuerStatus = ", issuerStatus.toString(), "the issuer certificate is not trusted");
|
|
343
|
+
// return VerificationStatus.BadSecurityChecksFailed;
|
|
344
|
+
}
|
|
300
345
|
if (issuerStatus !== VerificationStatus.Good && issuerStatus !== VerificationStatus.BadCertificateUntrusted) {
|
|
301
346
|
// if the issuer has other issue => let's drop!
|
|
302
347
|
return VerificationStatus.BadSecurityChecksFailed;
|
|
@@ -304,7 +349,7 @@ class CertificateManager {
|
|
|
304
349
|
// verify that certificate was signed by issuer
|
|
305
350
|
const isCertificateSignatureOK = (0, node_opcua_crypto_1.verifyCertificateSignature)(certificate, issuerCertificate);
|
|
306
351
|
if (!isCertificateSignatureOK) {
|
|
307
|
-
|
|
352
|
+
(0, toolbox_1.debugLog)(" the certificate was not signed by the issuer as it claim to be ! Danger");
|
|
308
353
|
return VerificationStatus.BadSecurityChecksFailed;
|
|
309
354
|
}
|
|
310
355
|
hasValidIssuer = true;
|
|
@@ -585,7 +630,20 @@ class CertificateManager {
|
|
|
585
630
|
}));
|
|
586
631
|
});
|
|
587
632
|
}
|
|
588
|
-
|
|
633
|
+
/**
|
|
634
|
+
* find the issuer certificate among the trusted issuer certificates.
|
|
635
|
+
*
|
|
636
|
+
* The findIssuerCertificate method is an asynchronous method that attempts to find
|
|
637
|
+
* the issuer certificate for a given certificate from the list of issuer certificate declared in the PKI
|
|
638
|
+
*
|
|
639
|
+
* - If the certificate is self-signed, it returns the certificate itself.
|
|
640
|
+
*
|
|
641
|
+
* - If the certificate has no extension 3, it is assumed to be generated by an old system, and a null value is returned.
|
|
642
|
+
*
|
|
643
|
+
* - the method checks both issuer and trusted certificates and returns the appropriate issuercertificate,
|
|
644
|
+
* if found. If multiple matching certificates are found, a warning is logged to the console.
|
|
645
|
+
*
|
|
646
|
+
*/
|
|
589
647
|
findIssuerCertificate(certificate) {
|
|
590
648
|
var _a, _b;
|
|
591
649
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certificate_manager.js","sourceRoot":"","sources":["../../lib/pki/certificate_manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"certificate_manager.js","sourceRoot":"","sources":["../../lib/pki/certificate_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -203,6 +203,41 @@ function isSelfSigned3(certificate: Buffer): boolean {
|
|
|
203
203
|
return isSelfSigned2(info);
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
+
export function findIssuerCertificateInChain(certificate: Certificate, chain: Certificate[]): Certificate | null {
|
|
207
|
+
if (!certificate) {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
const certInfo = exploreCertificate(certificate);
|
|
211
|
+
|
|
212
|
+
// istanbul ignore next
|
|
213
|
+
if (isSelfSigned2(certInfo)) {
|
|
214
|
+
// the certificate is self signed so is it's own issuer.
|
|
215
|
+
return certificate;
|
|
216
|
+
}
|
|
217
|
+
const wantedIssuerKey = certInfo.tbsCertificate.extensions?.authorityKeyIdentifier?.keyIdentifier;
|
|
218
|
+
|
|
219
|
+
// istanbul ignore next
|
|
220
|
+
if (!wantedIssuerKey) {
|
|
221
|
+
// Certificate has no extension 3 ! the certificate might have been generated by an old system
|
|
222
|
+
debugLog("Certificate has no extension 3");
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
const potentialIssuers = chain.filter((c) => {
|
|
226
|
+
const info = exploreCertificate(c);
|
|
227
|
+
return info.tbsCertificate.extensions && info.tbsCertificate.extensions.subjectKeyIdentifier === wantedIssuerKey;
|
|
228
|
+
return true;
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
if (potentialIssuers.length === 1) {
|
|
232
|
+
return potentialIssuers[0];
|
|
233
|
+
}
|
|
234
|
+
if (potentialIssuers.length > 1) {
|
|
235
|
+
debugLog("findIssuerCertificateInChain: certificate is not self-signed but has several issuers");
|
|
236
|
+
return potentialIssuers[0];
|
|
237
|
+
}
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
|
|
206
241
|
export enum CertificateManagerState {
|
|
207
242
|
Uninitialized = 0,
|
|
208
243
|
Initializing = 1,
|
|
@@ -392,12 +427,27 @@ export class CertificateManager {
|
|
|
392
427
|
|
|
393
428
|
debugLog("Is the Certificate self-signed ?", isSelfSigned);
|
|
394
429
|
if (!isSelfSigned) {
|
|
395
|
-
|
|
396
|
-
|
|
430
|
+
debugLog(
|
|
431
|
+
"Is issuer found in the list of know issuers ?",
|
|
432
|
+
"\n subjectKeyIdentifier = ",
|
|
433
|
+
info.tbsCertificate.extensions?.subjectKeyIdentifier,
|
|
434
|
+
"\n authorityKeyIdentifier = ",
|
|
435
|
+
info.tbsCertificate.extensions?.authorityKeyIdentifier?.keyIdentifier
|
|
436
|
+
);
|
|
437
|
+
let issuerCertificate = await this.findIssuerCertificate(chain[0]);
|
|
397
438
|
if (!issuerCertificate) {
|
|
398
|
-
//
|
|
399
|
-
//
|
|
400
|
-
|
|
439
|
+
// the issuer has not been found in the list of trusted certificate
|
|
440
|
+
// may be the issuer certificate is in the chain itself ?
|
|
441
|
+
issuerCertificate = findIssuerCertificateInChain(chain[0], chain);
|
|
442
|
+
if (!issuerCertificate) {
|
|
443
|
+
debugLog(
|
|
444
|
+
" the issuer has not been found in the chain itself nor in the issuer.cert list => the chain is incomplete!"
|
|
445
|
+
);
|
|
446
|
+
return VerificationStatus.BadCertificateChainIncomplete;
|
|
447
|
+
}
|
|
448
|
+
debugLog(" the issuer certificate has been found in the chain itself ! the chain is complete !");
|
|
449
|
+
} else {
|
|
450
|
+
debugLog(" the issuer certificate has been found in the issuer.cert folder !");
|
|
401
451
|
}
|
|
402
452
|
const issuerStatus = await this._innerVerifyCertificateAsync(issuerCertificate, true, level + 1);
|
|
403
453
|
if (issuerStatus === VerificationStatus.BadCertificateRevocationUnknown) {
|
|
@@ -412,6 +462,11 @@ export class CertificateManager {
|
|
|
412
462
|
// the issuer must have valid dates ....
|
|
413
463
|
return VerificationStatus.BadCertificateIssuerTimeInvalid;
|
|
414
464
|
}
|
|
465
|
+
if (issuerStatus == VerificationStatus.BadCertificateUntrusted) {
|
|
466
|
+
debugLog("warning issuerStatus = ", issuerStatus.toString(), "the issuer certificate is not trusted");
|
|
467
|
+
// return VerificationStatus.BadSecurityChecksFailed;
|
|
468
|
+
}
|
|
469
|
+
|
|
415
470
|
if (issuerStatus !== VerificationStatus.Good && issuerStatus !== VerificationStatus.BadCertificateUntrusted) {
|
|
416
471
|
// if the issuer has other issue => let's drop!
|
|
417
472
|
return VerificationStatus.BadSecurityChecksFailed;
|
|
@@ -419,7 +474,7 @@ export class CertificateManager {
|
|
|
419
474
|
// verify that certificate was signed by issuer
|
|
420
475
|
const isCertificateSignatureOK = verifyCertificateSignature(certificate, issuerCertificate);
|
|
421
476
|
if (!isCertificateSignatureOK) {
|
|
422
|
-
|
|
477
|
+
debugLog(" the certificate was not signed by the issuer as it claim to be ! Danger");
|
|
423
478
|
return VerificationStatus.BadSecurityChecksFailed;
|
|
424
479
|
}
|
|
425
480
|
hasValidIssuer = true;
|
|
@@ -477,8 +532,8 @@ export class CertificateManager {
|
|
|
477
532
|
// certificate is not active yet
|
|
478
533
|
debugLog(
|
|
479
534
|
chalk.red("certificate is invalid : certificate is not active yet !") +
|
|
480
|
-
|
|
481
|
-
|
|
535
|
+
" not before date =" +
|
|
536
|
+
certificateInfo.notBefore
|
|
482
537
|
);
|
|
483
538
|
isTimeInvalid = true;
|
|
484
539
|
}
|
|
@@ -756,7 +811,20 @@ export class CertificateManager {
|
|
|
756
811
|
});
|
|
757
812
|
}
|
|
758
813
|
|
|
759
|
-
|
|
814
|
+
/**
|
|
815
|
+
* find the issuer certificate among the trusted issuer certificates.
|
|
816
|
+
*
|
|
817
|
+
* The findIssuerCertificate method is an asynchronous method that attempts to find
|
|
818
|
+
* the issuer certificate for a given certificate from the list of issuer certificate declared in the PKI
|
|
819
|
+
*
|
|
820
|
+
* - If the certificate is self-signed, it returns the certificate itself.
|
|
821
|
+
*
|
|
822
|
+
* - If the certificate has no extension 3, it is assumed to be generated by an old system, and a null value is returned.
|
|
823
|
+
*
|
|
824
|
+
* - the method checks both issuer and trusted certificates and returns the appropriate issuercertificate,
|
|
825
|
+
* if found. If multiple matching certificates are found, a warning is logged to the console.
|
|
826
|
+
*
|
|
827
|
+
*/
|
|
760
828
|
public async findIssuerCertificate(certificate: Certificate): Promise<Certificate | null> {
|
|
761
829
|
const certInfo = exploreCertificate(certificate);
|
|
762
830
|
|
|
@@ -865,8 +933,8 @@ export class CertificateManager {
|
|
|
865
933
|
newStatus === "rejected"
|
|
866
934
|
? this.rejectedFolder
|
|
867
935
|
: newStatus === "trusted"
|
|
868
|
-
|
|
869
|
-
|
|
936
|
+
? this.trustedFolder
|
|
937
|
+
: this.rejectedFolder;
|
|
870
938
|
const certificateDest = path.join(destFolder, path.basename(certificateSrc));
|
|
871
939
|
|
|
872
940
|
debugLog("_moveCertificate1", fingerprint.substr(0, 10), "old name", certificateSrc);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-opcua-pki",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.2",
|
|
4
4
|
"description": "PKI management for node-opcua",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"chokidar": "^3.5.3",
|
|
50
50
|
"cli-table": "^0.3.11",
|
|
51
51
|
"minimist": "^1.2.8",
|
|
52
|
-
"node-opcua-crypto": "^2.
|
|
52
|
+
"node-opcua-crypto": "^2.2.0",
|
|
53
53
|
"progress": "^2.0.3",
|
|
54
54
|
"rimraf": "3.0.2",
|
|
55
55
|
"thenify": "^3.3.1",
|