t3n 37

Schritt für Schritt zur sicheren Web-App: So funktioniert Transportverschlüsselung mit TLS

Seite 2 / 3

Webserver einrichten

Sind alle Schritte durchgeführt, kopiert der Administrator mit dem Befehl rsync alle Dateien über SSH auf den Webserver. Da der Verlust des privaten Schlüssels das Aus der Sicherheit bedeutet, darf an dieser Stelle auf keinen Fall eine unverschlüsselte FTP-Verbindung zum Einsatz kommen.

Dateien übertragen

$ rsync example.com.key user@example.com:/etc/ssl-example.com/
$ rsync example.com.crt user@example.com:/etc/ssl-example.com/
$ rsync sub.class1.server.ca.pem user@example.com:/etc/ssl-example.com/

Listing 4

Apache

Zunächst aktiviert der Admin auf dem Server mit Root-Rechten das mitgelieferte TLS-Modul von Apache. Unter Debian/Ubuntu geht das folgendermaßen:

mod_ssl aktivieren

$ a2enmod ssl

Listing 5

In der Apache-Konfiguration (Debian/Ubuntu: /etc/apache2/ports.conf) sollte ein „Listen 443“ dafür sorgen, dass der Apache auf Port 443 lauscht.

Anschließend sucht er sich seine bestehende VirtualHost-Konfiguration heraus und ergänzt diese um eine analoge TLS-Variante:

VirtualHost-Konfiguration

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/
    # ...
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/
    # ...
    SSLEngine on
    SSLCertificateFile /etc/ssl-example.com/example.com.crt
    SSLCertificateKeyFile /etc/ssl-example.com/example.com.key
    SSLCertificateChainFile /etc/ssl-example.com/sub.class1.server.ca.pem
</VirtualHost>

Listing 6

Zum Schluss wird der Apache neu gestartet.

Node.js

Bei Node.js ist der Webserver direkt in der Anwendung integriert und wird auch hier konfiguriert. Analog zum Apache sieht das dann folgendermaßen aus:

Node.js

var https = require('https');
var fs = require('fs');

var options = {
    key:  fs.readFileSync('/etc/ssl-example.com/example.com.key'),
    cert: fs.readFileSync('/etc/ssl-example.com/example.com-combined.crt')
};

https.createServer(options, function (req, res) {
    res.writeHead(200);
    res.end("hello world\n");
}).listen(443);

Listing 7

Im Gegensatz zu Apache hat Node.js keinen Parameter für das Intermediate-CA-Zertifikat. Daher kopiert der Server-Administrator dieses und das eigene Zertifikat zusammen in eine Datei:

Kombiniertes Zertifikat erstellen

$ cat /etc/ssl-example.com/example.com.crt \
    /etc/ssl-example.com/sub.class1.server.ca.pem \sie
    > /etc/ssl-example.com/example.com-combined.crt

Listing 8

Bitte beachte unsere Community-Richtlinien

Schreib den ersten Kommentar!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung