From 87598b24eec9aa5887e219711e036fcd720587b9 Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Wed, 9 Nov 2022 20:18:24 +0100 Subject: [PATCH] Use pre-generated certificate for HttpCloser test (#477) Remove ugly hack to generate and use an insecure certificate on the fly in the HttpCloser's https tests and replace it with the already existing properly generated test certificate. Removes the dependency on node-forge. --- package.json | 1 - test/master/HttpCloser.js | 39 ++++----------------------------------- 2 files changed, 4 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index 3aeb2bfe..2a07c477 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "jsonwebtoken": "^8.2.1", "jszip": "^3.2.2", "mocha": "^9.2.2", - "node-forge": "^1.3.1", "nyc": "^15.1.0", "phin": "^3.5.1" } diff --git a/test/master/HttpCloser.js b/test/master/HttpCloser.js index 1476592f..95407354 100644 --- a/test/master/HttpCloser.js +++ b/test/master/HttpCloser.js @@ -1,11 +1,10 @@ "use strict"; const assert = require("assert").strict; +const fs = require("fs-extra"); const http = require("http"); const https = require("https"); const util = require("util"); -const tls = require("tls"); -const forge = require("node-forge"); const phin = require("phin"); const { wait } = require("@clusterio/lib/helpers"); @@ -14,21 +13,6 @@ const HttpCloser = require("@clusterio/master/src/HttpCloser"); // Time to wait during async operations to ensure they happened in order. const tick = 20; -const origCreateSecureContext = tls.createSecureContext; -tls.createSecureContext = function(options) { - if (!options.cert || !options.key) { - return origCreateSecureContext(options); - } - - let lessOptions = { ...options }; - delete lessOptions.key; - delete lessOptions.cert; - let ctx = origCreateSecureContext(lessOptions); - ctx.context.setCert(options.cert); - ctx.context.setKey(options.key, undefined); - return ctx; -}; - function serverSuite(proto) { let api = proto === "http" ? http : https; let server; @@ -49,24 +33,9 @@ function serverSuite(proto) { before(async function() { if (proto === "https") { - // Generate TLS certificate - let keypair = forge.pki.rsa.generateKeyPair(512); - let cert = forge.pki.createCertificate(); - cert.publicKey = keypair.publicKey; - cert.serialNumber = "01"; - cert.validity.notBefore = new Date(); - cert.validity.notAfter = new Date(cert.validity.notBefore); - cert.validity.notAfter.setFullYear(cert.validity.notAfter.getFullYear() + 1); - let attrs = [{ name: "commonName", value: "localhost" }]; - cert.setSubject(attrs); - cert.setIssuer(attrs); - cert.sign(keypair.privateKey); - serverOptions.key = forge.pki.privateKeyToPem(keypair.privateKey); - let pem = forge.pki.certificateToPem(cert); - serverOptions.cert = pem; - serverOptions.ciphers = "DEFAULT@SECLEVEL=0"; - clientOptions.ca = pem; - clientOptions.ciphers = "DEFAULT@SECLEVEL=0"; + serverOptions.key = await fs.readFile("test/file/tls/key.pem"); + serverOptions.cert = await fs.readFile("test/file/tls/cert.pem"); + clientOptions.ca = serverOptions.cert; } }); beforeEach(async function() {