diff --git a/.core/index.js b/.core/index.js index d4a2a3b..aee03a6 100644 --- a/.core/index.js +++ b/.core/index.js @@ -7,13 +7,13 @@ import express from 'express'; import bodyParser from 'body-parser'; import cookieParser from 'cookie-parser'; import cookieSession from 'cookie-session'; -import proxy from 'http-proxy-middleware'; import morgan from 'morgan'; import path from 'path'; import fs from 'fs'; import op from 'object-path'; import _ from 'underscore'; import staticGzip from 'express-static-gzip'; +import chalk from 'chalk'; const globby = require('./globby-patch').sync; @@ -307,15 +307,46 @@ const startServer = async () => { } }); - // TODO: Handle TLS server automatically // start server on the specified port and binding host app.listen(PORT, '0.0.0.0', function() { - BOOT(`Reactium Server running on port '${PORT}'...`); + BOOT( + `Reactium Server running ${chalk.red( + 'PLAIN', + )} on port '${PORT}'...`, + ); }); - // Provide opportunity for ssl server - if (fs.existsSync(`${rootPath}/src/app/server/ssl.js`)) { - require(`${rootPath}/src/app/server/ssl.js`)(app); + if (process.env.REACTIUM_TLS_MODE === 'on') { + const spdy = require('spdy'); + const options = { + key: fs.readFileSync( + op.get( + process.env, + 'REACTIUM_TLS_KEY', + path.resolve(__dirname, '../src', 'server.key'), + ), + ), + cert: fs.readFileSync( + op.get( + process.env, + 'REACTIUM_TLS_CERT', + path.resolve(__dirname, '../src', 'server.crt'), + ), + ), + }; + await ReactiumBoot.Hook.run('spdy-options', options); + + spdy.createServer(options, app).listen(TLS_PORT, error => { + if (error) { + ERROR(error); + process.exit(1); + } + BOOT( + `Reactium Server running ${chalk.green( + 'TLS', + )} on port '${TLS_PORT}'...`, + ); + }); } }; diff --git a/.core/server-globals.js b/.core/server-globals.js index d2d6939..fe0b1eb 100644 --- a/.core/server-globals.js +++ b/.core/server-globals.js @@ -32,6 +32,8 @@ module.exports = async () => { PORT = parseInt(PORT) || defaultPort; + global.TLS_PORT = op.get(process.env, 'TLS_PORT', 3443); + require('./reactium.log'); await reactiumBootHooks(); diff --git a/package-lock.json b/package-lock.json index 7f7b9b4..4edf271 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5357,8 +5357,7 @@ "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "cors": { "version": "2.8.5", @@ -6040,6 +6039,11 @@ "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", "dev": true }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, "dev-ip": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", @@ -9009,6 +9013,11 @@ "glogg": "^1.0.0" } }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -9219,6 +9228,17 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, "html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -9250,6 +9270,11 @@ "uuid": "^3.0.0" } }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -11832,6 +11857,11 @@ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -12510,6 +12540,11 @@ "es-abstract": "^1.20.4" } }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -13508,8 +13543,7 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "progress": { "version": "2.0.3", @@ -13914,7 +13948,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -13928,14 +13961,12 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -14758,6 +14789,11 @@ "commander": "^2.8.1" } }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -15377,6 +15413,43 @@ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "specificity": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", @@ -15550,7 +15623,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" }, @@ -15558,8 +15630,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -16857,8 +16928,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "utils-merge": { "version": "1.0.1", @@ -17145,6 +17215,14 @@ "graceful-fs": "^4.1.2" } }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", diff --git a/package.json b/package.json index f2cfaff..f6c4514 100644 --- a/package.json +++ b/package.json @@ -90,6 +90,7 @@ "semver": "^7.3.8", "serialize-javascript": "^6.0.1", "shallow-equals": "^1.0.0", + "spdy": "^4.0.2", "underscore": "^1.13.6", "uuid": "^3.4.0", "xss": "^1.0.14" diff --git a/src/server.crt b/src/server.crt new file mode 100644 index 0000000..c7a3658 --- /dev/null +++ b/src/server.crt @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3UCFGEzBaUMG8FVpMs+f1XH3lOiA92sMA0GCSqGSIb3DQEBCwUAMIGC +MQswCQYDVQQGEwJVUzEPMA0GA1UECAwGSGF3YWlpMREwDwYDVQQHDAhIb251bHVs +dTEVMBMGA1UECgwMUmVhY3RpdW0gTExDMRcwFQYDVQQDDA5yZWFjdGl1bS5sb2Nh +bDEfMB0GCSqGSIb3DQEJARYQam9obkByZWFjdGl1bS5pbzAeFw0yMzA0MjExNTEz +MjdaFw0yNDA0MjAxNTEzMjdaMIGCMQswCQYDVQQGEwJVUzEPMA0GA1UECAwGSGF3 +YWlpMREwDwYDVQQHDAhIb251bHVsdTEVMBMGA1UECgwMUmVhY3RpdW0gTExDMRcw +FQYDVQQDDA5yZWFjdGl1bS5sb2NhbDEfMB0GCSqGSIb3DQEJARYQam9obkByZWFj +dGl1bS5pbzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMhxAXaSIVY3 +hG31QmjZZiDXlRwLYiRTADpbhTDEJL32eT2lPVOPiGYq9Qzj3K967wMhv03spesn +tjD7BikN5CBkuzlj2LFYfK8dRW2eYTVh8trj0TyMjTKORIDxaubgOXMxiLrVGKl3 +ZpbwhHc/MG66tYZsL0m2mPIOr9LPYWs2jgLi9Azkka3i+6U+WFbYG2QdE7zVAWbF +yR7HHiyiMIJr+kPtxKnhqVUgCrR1ZZpUyGBhqR8LR4JJAEC6TI22mibZ55hBsi8X +NWrxXM/DOtqZpGFyqkaZx1+y8zJ8RiO1uMngShJqbQTx4e3ANIRqM1wM0UJ3YcUV +yo/q1bx/poaPw6N5N54UGJoi8zKk02PdMIeyEYAzpV+nQPPzCZhkuujfGFTFTQhS ++eVTDi56jhPdcRHPpxGWVUguqdV3MIo42AzC/O9t/22my4APYCNcKxOGoBlmURRj +nNMjAfbOqEwpVS0uVDPJYqSKrSqzG95U9uAH7evGzSHyuuOACyKsmegd8H0SRaYI +9QZii2jfGcvWx/dtbPPX3jea5GfN7cs+T8t6RASdpOGkoaTGFOWeq7pnB8b73J2D +13Gxzl9jFB4RSVhQ21+Lptt/y8ouI2UWgtQOoY3BH3hGXNZ1oqgsIJmaniPd9fz3 +iJDXspg3cE3FGAkwtfYJJF8dOHNqELsZAgMBAAEwDQYJKoZIhvcNAQELBQADggIB +AAynspRmVKZ0lNtghVJ+WhGrT43jt/9+XGQ2UQ/VR+f66xkAOwSTj7NbrebAgcnY +m1OuUVYPg6aGWrKz2iPBKpA+l9QcjFmwdrFMk6fobUPiCfe4rKSyn01iJOZJDsl9 +ajD4SKdNCzkJQvtRC8Ki0YMO7gEPlVlEr1lb8w+ZEXzcgUhhieq0GhwNBX3jza+3 +QOEHFYqgD7/QZ6p/T17fsV4dQPsNnlrI1IoBkoF86d6PSLYuRLo3cdS8ClLKaQkk +ta8oBTWnNER3dFXYNmzuZsNgkGbtKAQa40wcDL/On8pLOynQbtNjHDpPpJ1yJrtZ +dTSjFbKIa/3XGFyHo8ByeKKcVYmOXLkkvNAujpJkGRN+FDsk2ewzMaAPVc0/b6hZ +tOxhNOsV/o4Hsvln4xHJsnVppn/FhHdq/wchuC/FgMxkrO9GWwfxBMzDEfBxWE0W +T4a6digk9xLp7uPVeVYTh9xKZx5TI0K0qqUL8QGiNVbrM3/quCjKA5I/iPk0IWVF +nD7pJns9Q773IDYYxjwF1ohOV/7teWWrk8HhjsVhQrGBVanpNiaXJl7VsfEk87o2 +ID67PP3bnSb2d5hLCqy/Galk3go3CBU9DRcAHIQZmUq8V99H/omP694bq9Kb0tfR +oT/ROT0hQX17bY3eb72DggjPQ+2xkoCsyx9+n4pBX7ir +-----END CERTIFICATE----- diff --git a/src/server.csr b/src/server.csr new file mode 100644 index 0000000..904fcf5 --- /dev/null +++ b/src/server.csr @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEyDCCArACAQAwgYIxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIDAZIYXdhaWkxETAP +BgNVBAcMCEhvbnVsdWx1MRUwEwYDVQQKDAxSZWFjdGl1bSBMTEMxFzAVBgNVBAMM +DnJlYWN0aXVtLmxvY2FsMR8wHQYJKoZIhvcNAQkBFhBqb2huQHJlYWN0aXVtLmlv +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyHEBdpIhVjeEbfVCaNlm +INeVHAtiJFMAOluFMMQkvfZ5PaU9U4+IZir1DOPcr3rvAyG/Teyl6ye2MPsGKQ3k +IGS7OWPYsVh8rx1FbZ5hNWHy2uPRPIyNMo5EgPFq5uA5czGIutUYqXdmlvCEdz8w +brq1hmwvSbaY8g6v0s9hazaOAuL0DOSRreL7pT5YVtgbZB0TvNUBZsXJHsceLKIw +gmv6Q+3EqeGpVSAKtHVlmlTIYGGpHwtHgkkAQLpMjbaaJtnnmEGyLxc1avFcz8M6 +2pmkYXKqRpnHX7LzMnxGI7W4yeBKEmptBPHh7cA0hGozXAzRQndhxRXKj+rVvH+m +ho/Do3k3nhQYmiLzMqTTY90wh7IRgDOlX6dA8/MJmGS66N8YVMVNCFL55VMOLnqO +E91xEc+nEZZVSC6p1XcwijjYDML8723/babLgA9gI1wrE4agGWZRFGOc0yMB9s6o +TClVLS5UM8lipIqtKrMb3lT24Aft68bNIfK644ALIqyZ6B3wfRJFpgj1BmKLaN8Z +y9bH921s89feN5rkZ83tyz5Py3pEBJ2k4aShpMYU5Z6rumcHxvvcnYPXcbHOX2MU +HhFJWFDbX4um23/Lyi4jZRaC1A6hjcEfeEZc1nWiqCwgmZqeI931/PeIkNeymDdw +TcUYCTC19gkkXx04c2oQuxkCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4ICAQCKwY6e +yxW3jzQoa0PDhrNf3QSRhBTMwYXxISt80qt9QDKvHLEq4wVEgVkplBENixHOBhOI +NaUrsTpt5oyL1qxEbMCrutv1O95AFYZSxqFZoxF4MHMvxq8diOBhrDlyANHFZ2ig +MXO/1vpzc1ni3M0f7iQ/+y69Tr30ob4BuAHy4XGmgvCVj6zVmdPQv8IRwJwT3Zdp +SJ78NtrDNPyES/kCJdUU4SdLDfNq4k/H1j9E2RVcbp97dy0K5NecVH+Eix0kNwO4 ++8eA13HdC3w18B0rYtrh5rbsk5w4FQIcsyUfLwqb3UjFpuR4wBXtYYE3LsGaaBnz +n8GlQ3HopSxn3qJfPFCGwG8awSTQP5tlh2o+P4gvz4nr4EEkVtRh2ZI0b1aaYGbY +tL1nnUe+MhFSADQc5SdkCU7w2MxPYucnFdlI7ZE/nZMlx+bA1L8ZTao06a1Xv4eJ +gmBY1cwdu5duKG4N/L/482udL4srMQsh7Xh43QtVCsuXrCdsMOKnl+2oOhJUOAGJ +/h+uix22HgI9DMXitPg0D73mQy5rizA/6YDTIXTNvwpTwRLI+osCH1x2L2dOZ3fl +Mxki6Vi77/BMvJZ1+Xsf3rSWCpcfhpx1Dj+LyNWhqUNi3wSrzI46T+xCWm4Fg+nv +sIwBeRyA0rx76bgHIPznhMS6glHragsisW3WSA== +-----END CERTIFICATE REQUEST----- diff --git a/src/server.key b/src/server.key new file mode 100644 index 0000000..0847452 --- /dev/null +++ b/src/server.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +kKAFPPVdIM56Mzpc1mrHa59kDhX+ +-----END PRIVATE KEY-----