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 ## Timezone
The timezone is set by default to "America/New_York". It gets for example used by the The timezone is set by default to "America/New_York". It gets for example used by the

View file

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