preloader
30 November 2015 / #Sexilog

Switch SexiLog to https

Cela fait plusieurs fois que des personnes nous demande quelle est la procédure pour pouvoir bénéficier de SexiLog en HTTPS. par défault, effectivement, l’appliance n’écoute que en HTTP ce qui peu etre problematique dans certains environnement. Voici donc la procédure pour basculer une appliance SexiLog en HTTPS avec redirection des flux HTTP>HTTPS.

Cette procedure necessite une modification des fichiers systemes de l’appliance.

Faites bien attention a bien suivre les differentes etapes, si vous avez un doute, n’hesitez pas a nous demander sur github ou twitter.

Le composant qui fournit le service Web est NodeJS (via le composant kibana-proxy). Comme Kibana3 est developpé principalement en javascript (code client), cela permet d’eviter que ce soit le client qui interroge directement votre cluster Elasticsearch.

Le chemin de l’application NodeJS est /usr/lib/node_modules/kibana-proxy/

Le but de ce billet n’est pas d’expliquer comment NodeJS fonctionne, mais juste de voir la configuration pour HTTP>HTTPS.

Il convient donc de modifier le fichier /usr/lib/node_modules/kibana-proxy/app.js et de faire ces modifications:

...
 // HTTPS
 var http = require('http');
 var https = require('https');
 var privateKey = fs.readFileSync('server.key', 'utf8');
 var certificate = fs.readFileSync('server.crt', 'utf8');
 var credentials = {key: privateKey, cert: certificate};
 // END=HTTPS
...

app.use('/', express.static(__dirname + '/' + kibanaPath));
 //server = app.listen(config.port, "0.0.0.0", function() {
 // console.log('server listening on ' + config.port);
 //});
 // HTTPS
 http.createServer(function (req, res) {
 res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url });
 res.end();
 }).listen(80);
 https.createServer(credentials, app).listen(443);
 // END-HTTPS

Les fichiers de certificat (server.key et server.crt) peuvent être créés via les commandes suivantes:

openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 3650
openssl rsa -in server.key -out server.key

Une fois le fichier modifié, il vous suffit d’uploader votre certificat (et sa clé) sur votre appliance SexiLog (via scp sous Linux/Mac ou WinSCP sous Windows par exemple) et de redémarrer NodeJS pour que cela soit pris en compte:

/etc/init.d/node-app restart --force

> Frederic MARTIN