From 740149deb7fa571fa28451b4ac900514ec87c63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C3=85kesson?= <sermuns@hades.lysator.liu.se> Date: Fri, 15 Sep 2023 14:30:18 +0200 Subject: [PATCH] Trying to use greenlock-express... this wont work either --- nodejs-server/.greenlockrc | 1 + nodejs-server/app.js | 9 + nodejs-server/greenlock.d/config.json | 26 ++ nodejs-server/greenlock.d/config.json.bak | 18 ++ nodejs-server/package-lock.json | 282 +++++++++++++++++++++- nodejs-server/package.json | 4 +- nodejs-server/server.js | 17 +- 7 files changed, 346 insertions(+), 11 deletions(-) create mode 100644 nodejs-server/.greenlockrc create mode 100644 nodejs-server/app.js create mode 100644 nodejs-server/greenlock.d/config.json create mode 100644 nodejs-server/greenlock.d/config.json.bak diff --git a/nodejs-server/.greenlockrc b/nodejs-server/.greenlockrc new file mode 100644 index 0000000..5e1e851 --- /dev/null +++ b/nodejs-server/.greenlockrc @@ -0,0 +1 @@ +{"manager":{"module":"@greenlock/manager"},"configDir":"./greenlock.d"} \ No newline at end of file diff --git a/nodejs-server/app.js b/nodejs-server/app.js new file mode 100644 index 0000000..fd6aac7 --- /dev/null +++ b/nodejs-server/app.js @@ -0,0 +1,9 @@ +'use strict'; + +// Here's a vanilla HTTP app to start, +// but feel free to replace it with Express, Koa, etc +var app = function(req, res) { + res.end('Hello, Encrypted World!'); +}; + +module.exports = app; diff --git a/nodejs-server/greenlock.d/config.json b/nodejs-server/greenlock.d/config.json new file mode 100644 index 0000000..0fe6ae8 --- /dev/null +++ b/nodejs-server/greenlock.d/config.json @@ -0,0 +1,26 @@ +{ + "defaults": { + "store": { + "module": "greenlock-store-fs" + }, + "challenges": { + "http-01": { + "module": "acme-http-01-standalone" + } + }, + "renewOffset": "-45d", + "renewStagger": "3d", + "accountKeyType": "EC-P256", + "serverKeyType": "RSA-2048", + "subscriberEmail": "sermuns@lysator.liu.se" + }, + "sites": [ + { + "subject": "shipon.lysator.liu.se", + "altnames": [ + "shipon.lysator.liu.se" + ], + "renewAt": 1 + } + ] +} \ No newline at end of file diff --git a/nodejs-server/greenlock.d/config.json.bak b/nodejs-server/greenlock.d/config.json.bak new file mode 100644 index 0000000..d497066 --- /dev/null +++ b/nodejs-server/greenlock.d/config.json.bak @@ -0,0 +1,18 @@ +{ + "defaults": { + "store": { + "module": "greenlock-store-fs" + }, + "challenges": { + "http-01": { + "module": "acme-http-01-standalone" + } + }, + "renewOffset": "-45d", + "renewStagger": "3d", + "accountKeyType": "EC-P256", + "serverKeyType": "RSA-2048", + "subscriberEmail": "sermuns@lysator.liu.se" + }, + "sites": [] +} \ No newline at end of file diff --git a/nodejs-server/package-lock.json b/nodejs-server/package-lock.json index fd8c634..7b58da8 100644 --- a/nodejs-server/package-lock.json +++ b/nodejs-server/package-lock.json @@ -9,11 +9,121 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "acme-client": "^5.0.0", "body-parser": "^1.20.2", "child_process": "^1.0.2", "cors": "^2.8.5", "express": "^4.18.2", - "fs": "^0.0.1-security" + "fs": "^0.0.1-security", + "greenlock-express": "^4.0.3" + } + }, + "node_modules/@greenlock/manager": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@greenlock/manager/-/manager-3.1.0.tgz", + "integrity": "sha512-PBy5CMK+j4oD7sj7hF5qE+xKEOSiiuL2hHd5X5ttEbtnTSDKjNeqbrR5k2ZddwVNdjOVeBIeuqlm81IFZ+Ftew==", + "dependencies": { + "greenlock-manager-fs": "^3.1.0" + } + }, + "node_modules/@root/acme": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@root/acme/-/acme-3.1.0.tgz", + "integrity": "sha512-GAyaW63cpSYd2KvVp5lHLbCWeEhJPKZK9nsJvZJOKsD9Uv88KEttn4FpDZEJ+2q3Jsey0DWpuQ2I4ft0JV9p2w==", + "hasInstallScript": true, + "dependencies": { + "@root/csr": "^0.8.1", + "@root/encoding": "^1.0.1", + "@root/keypairs": "^0.10.0", + "@root/pem": "^1.0.4", + "@root/request": "^1.6.1", + "@root/x509": "^0.7.2" + } + }, + "node_modules/@root/asn1": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@root/asn1/-/asn1-1.0.0.tgz", + "integrity": "sha512-0lfZNuOULKJDJmdIkP8V9RnbV3XaK6PAHD3swnFy4tZwtlMDzLKoM/dfNad7ut8Hu3r91wy9uK0WA/9zym5mig==", + "dependencies": { + "@root/encoding": "^1.0.1" + } + }, + "node_modules/@root/csr": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@root/csr/-/csr-0.8.1.tgz", + "integrity": "sha512-hKl0VuE549TK6SnS2Yn9nRvKbFZXn/oAg+dZJU/tlKl/f/0yRXeuUzf8akg3JjtJq+9E592zDqeXZ7yyrg8fSQ==", + "dependencies": { + "@root/asn1": "^1.0.0", + "@root/pem": "^1.0.4", + "@root/x509": "^0.7.2" + } + }, + "node_modules/@root/encoding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@root/encoding/-/encoding-1.0.1.tgz", + "integrity": "sha512-OaEub02ufoU038gy6bsNHQOjIn8nUjGiLcaRmJ40IUykneJkIW5fxDqKxQx48cszuNflYldsJLPPXCrGfHs8yQ==" + }, + "node_modules/@root/greenlock": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@root/greenlock/-/greenlock-4.0.5.tgz", + "integrity": "sha512-KR9w3mYE9aH33FCibI8oSYBQV+f7lc3MVPdZ9nxY2tqRLmJp05cMOMz340mtG14VnWDuznLj4TbBj3sHIuoQPQ==", + "dependencies": { + "@greenlock/manager": "^3.1.0", + "@root/acme": "^3.1.0", + "@root/csr": "^0.8.1", + "@root/keypairs": "^0.10.0", + "@root/mkdirp": "^1.0.0", + "@root/request": "^1.6.1", + "acme-http-01-standalone": "^3.0.5", + "cert-info": "^1.5.1", + "greenlock-store-fs": "^3.2.2", + "safe-replace": "^1.1.0" + }, + "bin": { + "greenlock": "bin/greenlock.js" + } + }, + "node_modules/@root/greenlock-express": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@root/greenlock-express/-/greenlock-express-4.0.4.tgz", + "integrity": "sha512-a0/9tHNQwt5Uyod7Mp59lo5UwrjdpOaRgaw8oKvDopVvrjsk1Urdhz9MoLh5p4APt7KhAI/hMFSG4gvczgSwaA==", + "dependencies": { + "@root/greenlock": "^4.0.5", + "redirect-https": "^1.3.1" + } + }, + "node_modules/@root/keypairs": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@root/keypairs/-/keypairs-0.10.3.tgz", + "integrity": "sha512-hbmjVbk/G99Z1XlUzJM4VOAaR8jm4vMnfwpZL301FA24ubJ/bOjj6enCrz9gKsQvBO6RY4/R4MgUuWpXeqeZZQ==", + "dependencies": { + "@root/encoding": "^1.0.1", + "@root/pem": "^1.0.4", + "@root/x509": "^0.7.2" + } + }, + "node_modules/@root/mkdirp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@root/mkdirp/-/mkdirp-1.0.0.tgz", + "integrity": "sha512-hxGAYUx5029VggfG+U9naAhQkoMSXtOeXtbql97m3Hi6/sQSRL/4khKZPyOF6w11glyCOU38WCNLu9nUcSjOfA==" + }, + "node_modules/@root/pem": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@root/pem/-/pem-1.0.4.tgz", + "integrity": "sha512-rEUDiUsHtild8GfIjFE9wXtcVxeS+ehCJQBwbQQ3IVfORKHK93CFnRtkr69R75lZFjcmKYVc+AXDB+AeRFOULA==" + }, + "node_modules/@root/request": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@root/request/-/request-1.9.2.tgz", + "integrity": "sha512-wVaL9yVV9oDR9UNbPZa20qgY+4Ch6YN8JUkaE4el/uuS5dmhD8Lusm/ku8qJVNtmQA56XLzEDCRS6/vfpiHK2A==" + }, + "node_modules/@root/x509": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@root/x509/-/x509-0.7.2.tgz", + "integrity": "sha512-ENq3LGYORK5NiMFHEVeNMt+fTXaC7DTS6sQXoqV+dFdfT0vmiL5cDLjaXQhaklJQq0NiwicZegzJRl1ZOTp3WQ==", + "dependencies": { + "@root/asn1": "^1.0.0", + "@root/encoding": "^1.0.1" } }, "node_modules/accepts": { @@ -28,11 +138,65 @@ "node": ">= 0.6" } }, + "node_modules/acme-client": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/acme-client/-/acme-client-5.0.0.tgz", + "integrity": "sha512-sNeNiBKoxfLZi3wkEp27vq7coiuKBFz9LYBK00sWcODYupeHwMk8sXJOqLola9gkpTVdo569ApDqbwVa2FAd4w==", + "dependencies": { + "axios": "0.27.2", + "debug": "^4.1.1", + "jsrsasign": "^10.5.26", + "node-forge": "^1.3.1" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/acme-client/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/acme-client/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/acme-http-01-standalone": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/acme-http-01-standalone/-/acme-http-01-standalone-3.0.5.tgz", + "integrity": "sha512-W4GfK+39GZ+u0mvxRVUcVFCG6gposfzEnSBF20T/NUwWAKG59wQT1dUbS1NixRIAsRuhpGc4Jx659cErFQH0Pg==" + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, "node_modules/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", @@ -76,11 +240,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/cert-info": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/cert-info/-/cert-info-1.5.1.tgz", + "integrity": "sha512-eoQC/yAgW3gKTKxjzyClvi+UzuY97YCjcl+lSqbsGIy7HeGaWxCPOQFivhUYm27hgsBMhsJJFya3kGvK6PMIcQ==", + "bin": { + "cert-info": "bin/cert-info.js" + } + }, "node_modules/child_process": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -133,6 +316,14 @@ "ms": "2.0.0" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -271,6 +462,38 @@ "node": ">= 0.8" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -311,6 +534,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/greenlock-express": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/greenlock-express/-/greenlock-express-4.0.3.tgz", + "integrity": "sha512-swTCuaLcZWbwRe9gf28AN1VO2PLiAoPB7StVhEFTBqCqqoHgiu0PJqdz3IbnfXB/8Kckx4sZ+B+Re2BvoCHY4A==", + "dependencies": { + "@root/greenlock": "^4.0.4", + "@root/greenlock-express": "^4.0.3", + "redirect-https": "^1.1.5" + } + }, + "node_modules/greenlock-manager-fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/greenlock-manager-fs/-/greenlock-manager-fs-3.1.1.tgz", + "integrity": "sha512-np6qdnPIOZx40PAcSQcqK1eMPWjTKxsxcgRd/OVg0ai49WC1Ds74CTrwmB84pq2n53ikbnDBQFmKEQ4AC0DK8w==", + "dependencies": { + "@root/mkdirp": "^1.0.0", + "safe-replace": "^1.1.0" + } + }, + "node_modules/greenlock-store-fs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/greenlock-store-fs/-/greenlock-store-fs-3.2.2.tgz", + "integrity": "sha512-92ejLB4DyV4qv/2b6VLGF2nKfYQeIfg3o+e/1cIoYLjlIaUFdbBXkzLTRozFlHsQPZt2ALi5qYrpC9IwH7GK8A==", + "dependencies": { + "@root/mkdirp": "^1.0.0", + "safe-replace": "^1.1.0" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -383,6 +634,14 @@ "node": ">= 0.10" } }, + "node_modules/jsrsasign": { + "version": "10.8.6", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.8.6.tgz", + "integrity": "sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw==", + "funding": { + "url": "https://github.com/kjur/jsrsasign#donations" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -447,6 +706,14 @@ "node": ">= 0.6" } }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -535,6 +802,14 @@ "node": ">= 0.8" } }, + "node_modules/redirect-https": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/redirect-https/-/redirect-https-1.3.1.tgz", + "integrity": "sha512-Stex2nI+tMpZXKvy++32TiBXEy+GdpAfp3EUnl5BqCiJ5f5i6XvUSFrs7TR7IoRSlthM7ZtD89uYGTtJBXlFYg==", + "dependencies": { + "escape-html": "^1.0.3" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -554,6 +829,11 @@ } ] }, + "node_modules/safe-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.1.0.tgz", + "integrity": "sha512-9/V2E0CDsKs9DWOOwJH7jYpSl9S3N05uyevNjvsnDauBqRowBPOyot1fIvV5N2IuZAbYyvrTXrYFVG0RZInfFw==" + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", diff --git a/nodejs-server/package.json b/nodejs-server/package.json index 07387d1..fd7647c 100644 --- a/nodejs-server/package.json +++ b/nodejs-server/package.json @@ -10,10 +10,12 @@ "author": "", "license": "ISC", "dependencies": { + "acme-client": "^5.0.0", "body-parser": "^1.20.2", "child_process": "^1.0.2", "cors": "^2.8.5", "express": "^4.18.2", - "fs": "^0.0.1-security" + "fs": "^0.0.1-security", + "greenlock-express": "^4.0.3" } } diff --git a/nodejs-server/server.js b/nodejs-server/server.js index 8c2d647..78e7ac3 100644 --- a/nodejs-server/server.js +++ b/nodejs-server/server.js @@ -63,13 +63,12 @@ app.get('/:query', (req, res) => { }); }); -// SSL options -//const options = { -// key : fs.readFileSync('/home/sermuns/.ssl/key.pem'), -// cert: fs.readFileSync('/home/sermuns/.ssl/cert.pem') -//} -//const server = https.createServer(options, app) +const glx = require('greenlock-express').init({ + packageRoot: __dirname, + // where to look for configuration + configDir: './greenlock.d', + // whether or not to run at cloudscale + cluster: false +}) -app.listen(port, () => { - console.log(`Server is running on port ${port}`); -}); +glx.serve(app) -- GitLab