Entwicklung & Design

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

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!