Minor improvements to SSL support

This commit is contained in:
Jan Oberhauser 2020-03-29 12:46:55 +02:00
parent 37ccff8cb8
commit f00b7347c8
3 changed files with 30 additions and 16 deletions

View file

@ -137,6 +137,19 @@ export NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash
```
## SSL
It is possible to start n8n with SSL enabled by supplying a certificate to use:
```bash
export N8N_PROTOCOL=https
export N8N_SSL_KEY=/data/certs/server.key
export N8N_SSL_CERT=/data/certs/server.pem
```
## Timezone
The timezone is set by default to "America/New_York". It gets for example used by the

View file

@ -288,10 +288,10 @@ const config = convict({
// Overwrite default configuration with settings which got defined in
// optional configuration files
if (process.env.N8N_CONFIG_FILES !== undefined) {
const configFiles = process.env.N8N_CONFIG_FILES.split(',');
console.log(`\nLoading configuration overwrites from:\n - ${configFiles.join('\n - ')}\n`);
const configFiles = process.env.N8N_CONFIG_FILES.split(',');
console.log(`\nLoading configuration overwrites from:\n - ${configFiles.join('\n - ')}\n`);
config.loadFile(configFiles);
config.loadFile(configFiles);
}
config.validate({

View file

@ -1,4 +1,7 @@
import * as express from 'express';
import {
readFileSync,
} from 'fs';
import {
dirname as pathDirname,
join as pathJoin,
@ -98,8 +101,8 @@ class App {
versions: IPackageVersions | undefined;
protocol: string;
ssl_key: string;
ssl_cert: string;
sslKey: string;
sslCert: string;
constructor() {
this.app = express();
@ -118,8 +121,8 @@ class App {
this.activeExecutionsInstance = ActiveExecutions.getInstance();
this.protocol = config.get('protocol');
this.ssl_key = config.get('ssl_key');
this.ssl_cert = config.get('ssl_cert');
this.sslKey = config.get('ssl_key');
this.sslCert = config.get('ssl_cert');
}
@ -1262,19 +1265,17 @@ export async function start(): Promise<void> {
const app = new App();
await app.config();
// Differntiate HTTP and HTTPS server
const http = require('http');
const https = require('https');
const fs = require('fs');
var server;
let server;
if(app.protocol === 'https'){
const privateKey = fs.readFileSync(app.ssl_key,'utf8');
const cert = fs.readFileSync(app.ssl_cert,'utf8');
const credentials = {key: privateKey,cert: cert};
const https = require('https');
const privateKey = readFileSync(app.sslKey,'utf8');
const cert = readFileSync(app.sslCert,'utf8');
const credentials = { key: privateKey,cert };
server = https.createServer(credentials,app.app);
}else{
const http = require('http');
server = http.createServer(app.app);
}