# HG changeset patch # User Emanuel Schuetze # Date 1411981726 -7200 # Node ID 4523d81eeafe1eec2f7f309fb6285f250d3f6989 # Parent be989e9d49a4b81789bb377f22ace4f9cd1b3219# Parent 5e0c338552b44c2e05a34aa12fe62158ef5811f4 Merged. diff -r be989e9d49a4 -r 4523d81eeafe doc/help/admin/installation.rst --- a/doc/help/admin/installation.rst Mon Sep 29 11:08:20 2014 +0200 +++ b/doc/help/admin/installation.rst Mon Sep 29 11:08:46 2014 +0200 @@ -1,15 +1,31 @@ Installation ============ +Systemanforderungen +------------------- Die TrustBridge-Verwaltungsanwendung läuft unter Windows und GNU/Linux. -Offiziell unterstützt und geprüft sind Windows 7 und Ubuntu 14.04 +Offiziell unterstützt und geprüft sind Windows 7 (64 Bit) und Ubuntu 14.04 (64 Bit). (jeweils 64 Bit). +Erforderlicher Festplattenplatz: 22 MB (Windows) bzw. 17 MB (Ubuntu). + +Nur Ubuntu: Die Pakete ``nsis`` und ``sharutils`` sind erforderlich +für den Einsatz von TrustBridge-Admin. + +Windows +------- +TrustBridge-Admin muss nicht installiert werden und bringt alle +erforderlichen Abhängigkeiten mit. Einfach das +Zip-Archivs entpacken und die darin enthaltene +``trustbridge-admin.exe`` starten. + -TODO: Systemvoraussetzung, Windows, Ubuntu +Ubuntu +------ +Zunächst bitte die nötigen Paketabhängigkeiten installieren: -Systemvoraussetzungen ---------------------- +``sudo apt-get install nsis sharutils`` -* erforderlicher Festplattenplatz: ca. 20 MB +Anschließend das Zip-Archiv entpacken und die darin enthaltene +``trustbridge-admin`` starten. diff -r be989e9d49a4 -r 4523d81eeafe doc/help/admin/server.rst --- a/doc/help/admin/server.rst Mon Sep 29 11:08:20 2014 +0200 +++ b/doc/help/admin/server.rst Mon Sep 29 11:08:46 2014 +0200 @@ -1,4 +1,70 @@ Server-Anforderungen ==================== -TODO +Der TrustBridge-Update-Server stellt die Softwareversionen und +Zertifikatslisten für den TrustBridge-Client bereit. + +An den Betrieb des Update-Servers werden folgende Anforderungen +gestellt: + +* eine öffentlich zugängliche URL eines Download-Verzeichnises + (optional: Verzeichnis ist im Browser auflistbar). + +* Ausliefern aller Dateien nur über https (Version TLS 1.2) + in der Konfiguration und Einhaltung der Technischen Richtlinie + `"BSI TR-02102-2 Verwendung von Transport Layer Security (TLS)" + `_: + Cipher-Suite: ECDSA (mit brainpoolP256r1), + maximal TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384; + +* Manuelles Heraufladen von neue Dateien ermöglichen (z.B. per SCP; nur für den + TrustBridge-Administrator). + + +Zertifikatsanforderungen +------------------------ + +Windows-Code-Signing-Zertifikat +............................... +Für die Signatur des TrustBridge-Windows-Installers wird ein +Code-Signing-Zertifikat von einer vertrauenswürdigen, vorinstallierten +Zertifizierungsstelle auf Windows benötigt, um Authenticode für die +Verifikation der Erstinstallation nutzen zu können. + +* Empfohlene Schlüssellänge: RSA 2048 oder 3076 +* Empfohlener Hash-Algorithmus: SHA-256 + +Der geheime Schlüssel verbleibt beim TrustBridge-Administrator und +muss in der TrustBridge-Verwaltungsanwendung beim Erstellen eines +neuen Installationspakets angegeben werden. + +TODO: Gleiches Zertifikat auf zum Signieren des Linux-Binaries? + +Schlüsselmaterial für Listensignatur +.................................... +Jede Zertifikatsliste wird mit einem geheimen Schlüssel signiert. +Das zugehörige öffentliche Zertifikat ist in TrustBridge zur Signaturprüfung +fest verdrahtet. (TODO: korrekt?) + +* Empfohlene Schlüssellänge: RSA 3076 +* Empfohlener Hash-Algorithmus: SHA-256 + +Der geheime Schlüssel verbleibt beim TrustBridge-Administrator und +muss in der TrustBridge-Verwaltungsanwendung beim Erstellen einer +neuer Zertifikatsliste angegeben werden. + + + +Zertifikat für Update-Server +............................ +Der Transport von Zertifikatslisten und Softwareupdates wird +per HTTPS (Version TLS 1.2) abgesichert. +Das zugehörige öffentliche Zertifikat ist in TrustBridge fest verdrahtet. (TODO: korrekt?) + +Empfohlenes Verfahren ist ECDSA mit brainpoolP256r1-Parametern. Das Zertifikat +sollte den X.509 Standards (rfc5639, rfc7027) entsprechen und mit +PolarSSL funktionieren. Die X.509-Standards sind wichtig, damit das +mit neueren Klienten (wie Webbrowsern) gleich funktioniert, sobald +diese auch die entsprechende Kurve beherrschen. + +Der geheime Schlüssel wird zum Update-Server übertragen. diff -r be989e9d49a4 -r 4523d81eeafe packaging/create-dist-package.sh.in --- a/packaging/create-dist-package.sh.in Mon Sep 29 11:08:20 2014 +0200 +++ b/packaging/create-dist-package.sh.in Mon Sep 29 11:08:46 2014 +0200 @@ -68,12 +68,12 @@ done cd $TMPDIR/windows/licenses -echo SetOutPath \"\$INSTDIR\\licenses\" >> @CMAKE_CURRENT_BINARY_DIR@/filelist_in.nsh +echo SetOutPath \"\$INSTDIR\\licenses\" >> $TMPDIR/resources/filelist_in.nsh for file in `find * -type f`; do - echo File \"\${files_dir}\${path_sep}licenses\${path_sep}$file\" >> @CMAKE_CURRENT_BINARY_DIR@/filelist_in.nsh - echo Delete \"\$INSTDIR\\licenses\\$file\" >> @CMAKE_CURRENT_BINARY_DIR@/filelist_un.nsh + echo File \"\${files_dir}\${path_sep}licenses\${path_sep}$file\" >> $TMPDIR/resources/filelist_in.nsh + echo Delete \"\$INSTDIR\\licenses\\$file\" >> $TMPDIR/resources/filelist_un.nsh done -echo RmDir \"\$INSTDIR\\licenses\" >> @CMAKE_CURRENT_BINARY_DIR@/filelist_un.nsh +echo RmDir \"\$INSTDIR\\licenses\" >> $TMPDIR/resources/filelist_un.nsh cd $TMPDIR/windows/doc diff -r be989e9d49a4 -r 4523d81eeafe packaging/linux-installer.inc --- a/packaging/linux-installer.inc Mon Sep 29 11:08:20 2014 +0200 +++ b/packaging/linux-installer.inc Mon Sep 29 11:08:46 2014 +0200 @@ -74,7 +74,7 @@ { OPTS=`getopt \ -l uninstall,update,force,help,prefix:,system,version \ - -o d,f,p:,s -n "$ME" -- "$@"` + -o u,f,p:,s -n "$ME" -- "$@"` [ $? -eq 0 ] || usage 23 eval set -- "$OPTS" diff -r be989e9d49a4 -r 4523d81eeafe ui/mainwindow.cpp --- a/ui/mainwindow.cpp Mon Sep 29 11:08:20 2014 +0200 +++ b/ui/mainwindow.cpp Mon Sep 29 11:08:46 2014 +0200 @@ -469,7 +469,7 @@ qDebug() << "Failed to start process."; } connect(updaterProcess, SIGNAL(finished(int, QProcess::ExitStatus)), - this, SLOT(restart())); + this, SLOT(updaterFinished(int, QProcess::ExitStatus))); return; }