Changes for page STARFACE

Last modified by Sebastian Marsching on 2024/01/09 23:21

From version 7.1
edited by Sebastian Marsching
on 2022/07/17 15:59
Change comment: There is no comment for this version
To version 9.1
edited by Sebastian Marsching
on 2024/01/09 23:21
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -56,4 +56,55 @@
56 56  
57 57  # TLS-Zertifikat austauschen
58 58  
59 -Das TLS-Zertifikat für Tomcat und der zugehörige private Schlüssel ist in Java-Keystore unter `/usr/share/tomcat6/ssl/tomcat.keystore` (`/opt/tomcat/ssl/tomcat.keystore` in neueren STARFACE-Versionen) gespeichert. Das Passwort für den Keystore lautet „changeit“. Falls nicht nur ein neues Zertifikat hochgeladen werden soll (was über die Webserver-Oberfläche möglich ist), sondern auch der private Schlüssel ausgewechselt werden soll, kann diese Datei mit der Software [KeyStore Explorer](https://keystore-explorer.org/) bearbeitet werden.
59 +Das TLS-Zertifikat für Tomcat und der zugehörige private Schlüssel ist in einem Java-Keystore gespeichert.
60 +
61 +In älteren Versionen von STARFACE befindet sich dieser unter  `/usr/share/tomcat6/ssl/tomcat.keystore`, in neureren Versionen unter `/opt/tomcat/ssl/tomcat.keystore` **und** `/var/starface/tomcat/ssl/keystore.jks`.
62 +
63 +Das Passwort für den Keystore lautet „changeit“. Falls nicht nur ein neues Zertifikat hochgeladen werden soll (was über die Webserver-Oberfläche möglich ist), sondern auch der private Schlüssel ausgewechselt werden soll, kann diese Datei mit der Software [KeyStore Explorer](https://keystore-explorer.org/) bearbeitet werden.
64 +
65 +KeyStore Explorer kann leider nicht mit Zertifikaten und Schlüsseln im PEM-Format umgehen. Deshalb muss zunächst eine PKCS12-Datei mit dem Schlüsselpaar (Server-Zertikat, privater Schlüssel für Server-Zertifikat, ggf. Zertifikate von Zwischenzertifizierungsstellen) erstellt werden. Dies kann mit OpenSSL erfolgen:
66 +
67 +```bash
68 +openssl pkcs12 \
69 + -in starface-cert.pem \
70 + -inkey starface-privkey.pem \
71 + -certfile intermediate-ca.pem \
72 + -out starface.p12 \
73 + -export
74 +```
75 +
76 +Beim Export muss ein Passwort angegeben werden. Dieses Passwort muss dann erneut beim Import in KeyStore Explorer angegeben werden.
77 +
78 +Der Eintrag muss in KeyStore Explorer unter dem Namen `tomcat` importiert werden. Ein ggf. schon vorhanderer Eintrag gleichen Namens kann ersetzt werden. Beim Import wird auch nach einem Passwort gefragt mit dem das importierte Schlüsselpaar geschützt werden soll. Dort muss das Passwort „changeit“ (das gleiche, dass auch den gesamten Key-Store schützt) angegeben werden.
79 +
80 +Falls sich das Zertifikat der Root-CA geändert hat, muss dieses ebenfalls unter dem Eintrag `root` importiert werden. Auch hier kann ein ggf. schon vorhandener Eintrag ersetzt werden. Um ein evtl. im PEM-Format vorhandenes Zertifikat der Root-CA zu importieren, muss dieses zunächst in das DER-Format umgewandelt werden:
81 +
82 +```bash
83 +openssl x509 \
84 + -in root-ca.pem \
85 + -out root-ca.cer \
86 + -outform DER
87 +```
88 +
89 +# TLS-Zertifikate mit ECDSA-Schlüsseln
90 +
91 +Zur Zeit (STARFACE 8.1.1.1) unterstützt STARFACE keine Zertifikate mit ECDSA-Schlüsseln, d.h. es muss zwingend ein Zertifikat mit einem RSA-Schlüssel installiert werden.
92 +
93 +Der Grund liegt nicht in der Software selbst sondern in der Tomcat-Konfiguration der STARFACE: In der `ciphers`-Liste des TLS-Connectors werden nur RSA-basierte Cipher-Suites aufgelistet. Dies führt dazu, dass bei Verwendung eines ECDSA-basierten Zertifikats keine Verbindung hergestellt werden kann. In Firefox erhält man z.B. die Fehlermeldung `SSL_ERROR_NO_CYPHER_OVERLAP`.
94 +
95 +Ein temporärer Workaround liegt darin, sich per SSH auf der STARFACE einzuloggen und die Datei /opt/tomcat/conf/server.xml so zu bearbeiten, dass das `cipher`-Attribut des Connectors für Port 8081 zusätzlich die folgenden Cipher-Suites enthält:
96 +
97 +* TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
98 +* TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
99 +* TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
100 +* TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
101 +* TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
102 +* TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
103 +* TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
104 +* TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
105 +
106 +Je nach verwendetem Browser reicht wahrscheinlich auch nur die erste oder zweite Cipher-Suite.
107 +
108 +Anschließend muss Tomcat mit `systemctl restart tomcat.service` neugestartet werden. Nach erfolgreichem Neustart kann man sich wieder in der Administrationsoberfläche anmelden und das Zertifikat durch eines ersetzen, das einen RSA-Schlüssel verwendet.
109 +
110 +Den oben genannten Workaround dauerhaft zu verwenden empfiehlt sich eher nicht, da die hinzugefügten Cipher-Suites wieder entfernt werden, wenn STARFACE die Konfigurationsdatei neu schreibt. Dafür werden anscheinend die Templates in `/opt/tomcat/webapps/localhost/starface/WEB-INF/classes/de/vertico/starface/helpers/tomcat/https-connector-template.xml` und `/opt/tomcat/webapps/localhost/starface/WEB-INF/classes/de/vertico/starface/helpers/tomcat/provisioning-https-connector-template.xml` verwendet, d.h. man könnte prinzipiell diese Templates anpassen. Allerdings ist es sehr wahrscheinlich, dass diese Templates überschrieben werden, wenn die STARFACE-Version aktualisiert wird, d.h. eine solche Lösung würde regelmäßig manuelle Nacharbeiten erfordern. Einfach ein Zertifikat mit RSA-Schlüssel zu verwenden ist in dieser Hinsicht die einfachere Lösung. Dies funktioniert übrigens auch, wenn die übergeordnete CA selbst einen ECDSA-Schlüssel verwendet.