2015-08 Schweden 776 (Andere)_conflict-20150908-083350 (Medium)

Sichere Kommunikation mit Nuclos einrichten

Abhörsicher

Wer Nuclos selber betreiben möchte, sollte den Datenaustausch mittels HTTPS einrichten. Das ist die durch Verschlüsselung abhörsicher gemachte Variante von HTTP (Hypertext Transfer Protocol). Dafür benötigt der Anwendungsserver Tomcat ein Zertifikat, das man sich selbst ausstellen oder von einer autorisierten Stelle (Certifcate Authority – CA) bestätigen lassen kann. Die selbst ausgestellten Zertifikate sind nicht per se unsicherer, führen aber zu Sicherheitswarnungen von Oracle Java, das Zertifikate stets bei den CA’s validieren möchte. Novabit empfiehlt in seinen Installationshinweisen im Abschnitt „Konfiguration von HTTPS“ deshalb den Einsatz offizieller Zertifkate. Solche gibt es kostenlos von der Let’s-Encrypt-Initiative, die dann aber recht häufig aktualisiert werden müssen. Eine Suche nach „Letsencrypt tomcat“ liefert einschlägige Hinweise. Kostenpflichtige Zertifikate bieten unterschiedliche Laufzeiten und müssen entsprechend seltener angepasst werden. Für die teuren EV-Zertifikate mit „Extended Validation“ muss man ein „Doing business as“-Dokument, z.B. einen Eintrag im Gewerbe- oder Handelsregister, vorweisen können.

Auch bei unverschlüsselten Verbindungen über HTTP sendet Oracle Java Warnhinweise wegen mangelnder Sicherheit. Das sieht nicht nur unschön aus, sondern hat gute Gründe. Es ist durchaus möglich, das die unverschlüsselte Kommunikation zukünftig ganz unterbunden wird.

Verschlüsselung mit Reverse Proxy

Es ist möglich, Nuclos im internen Netzwerk unverschlüsselt über HTTP zu betreiben und die Verschlüsselung in Richtung Client mit einem Reverse Proxy zu gewährleisten. Der kommuniziert dann verschlüsselt mit dem Java- oder Webclient nach „draußen“ und nach „drinnen“ unverschlüsselt mit dem Nuclos-Tomcat. Dafür muss man aber sowohl die Konfiguration von Reverse Proxy als auch die des Nuclos-Tomcat entsprechend pflegen. Der Webclient kann in einem solchen HTTP/HTTPS-Mischbetrieb aufgrund von CORS-Problemen aber nicht verwendet werden. Ein Grund mehr, Nuclos generell für die Kommunikation per HTTPS einzurichten.

Konfigurationsbeispiel

Die folgenden Beispiele werden ohne Gewähr für Richtigkeit oder Funktionsfähigkeit gegeben. Sie müssen sie in Ihrer Umgebung prüfen und ggf. anpassen. Die Anforderungen an eine korrekte Verschlüsselung verändern sich auch mit der Zeit. Dennoch hier ein Hinweis für die Konfiguration der Tomcat-Engine (Version 7.0.63) und des Reverse Proxy nginx.

Szenario: Es wird HTTPS zwischen Client und Reverse Proxy verwendet, und der Reverse Proxy kommuniziert ebenfalls per HTTPS mit Nuclos, um die o.g. CORS-Probleme mit dem Webclient zu vermeiden.

In der Datei server.xml (Pfad abhängig von Nuclos-Installation, z.B. /opt/nuclos/tomcat/apache-tomcat-7.0.63/conf/server.xml).

<Connector SSLEnabled="true"
           clientAuth="false"
           keystoreFile="/opt/nuclos/extra/.keystore"
           keystorePass="ihrgeheimespasswort"
           maxThreads="150"
           port="443"
           protocol="HTTP/1.1"
           proxyName="nuclos.irgend.wo"
           proxyPort="443"
           scheme="https"
           secure="true"
           sslProtocol="TLS"/>

Und so kann die Konfiguration für den Reverse Proxy „nginx“ aussehen:

server {
    listen       443;
    server_name  nuclos.irgend.wo;
    location /nuclos {
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Forwarded-Server $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto "https";
          proxy_pass https://nuclos.local:443/nuclos;
          proxy_redirect off;
    }
    location /webclient {
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Forwarded-Server $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto "https";
          proxy_pass https://nuclos.local:443/webclient;
          proxy_redirect off;
    }
}
1 Antwort

Hinterlassen Sie einen Kommentar

Wollen Sie an der Diskussion teilnehmen?
Feel free to contribute!

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *