2016-07-29 17 views
7

Ich bin eine JavaFX-Anwendung bereitstellen und bin mir nicht sicher, was und nicht signiert werden muss. Hier sind meine Gedanken:JavaFX-Anwendung - Was muss signiert werden?

- Installationsdatei: Dies muss natürlich unterzeichnet werden.

- Die EXE, die die Anwendung startet: Ich glaube, das unterzeichnet werden muss, auch wenn es ein wenig komisch fühlt, weil es nicht mein Code.

- Meine JAR-Dateien: Ich glaube, dass diese auch unterzeichnet werden müssen, obwohl ich nicht sicher bin, ob etwas Schreckliches passiert, wenn ich es nicht tue.

- Bibliothek JARs, die ich aus dem Internet geschnappt habe: Ich habe nicht das Gefühl, ich sollte diese unterschreiben. Gibt es einen Grund dazu?

- Java Laufzeit: Ich vermute, es gibt keinen Grund, dies zu unterschreiben, und ich würde wahrscheinlich eine Vereinbarung verletzen, wenn ich es tue.

- JNLP Datei: Nicht verwenden, kein Grund, dies zu berühren.

Habe ich das richtig angesehen? Unterzeichne ich die richtigen Dateien?

Antwort

4

Ein Freund von mir einen Spruch ist: „Es ist nicht das, was du getan hast ... es ist das, was Sie vor Gericht beweisen können.“

Mit dieser Hinsicht, rate ich Sie von einem rechtlichen Standpunkt zu diesem Problem zu suchen, den schlimmstmöglichen Kontext betrachten und annehmen, in dem er sich anwenden lässt; Sie werden rechtlich zur Rechenschaft gezogen, nachdem jemand Ihre Software manipuliert hat.

Digitale Signaturen sind speziell für diese Art von Problemen konzipiert.

Mit dieser Hinsicht lassen Sie uns Ihre Antwort in zwei verschiedenen Klassifikations Teile aufgeteilt:

  1. die Software, die Sie die Freigabe - gehören Ihre Gläser, jnlp, gebündelt .exes usw.

    • Alle diese müssen verpfändet sein, um sicherzustellen, dass Sie nicht durch unbefugtes Tempern mit Ihrem eigenen Code beeinträchtigt werden. Es spielt keine Rolle, ob Sie das jnlp veröffentlicht haben oder nicht. Wenn jemand einen invasiven generiert und es zu dir zurückverfolgt wird, ist dein Fehler, deine eigene freigegebene Version dieses jnlp zu authentifizieren, nicht in Ordnung.
  2. die Software von anderen Menschen freigegeben. - enthält alles, was Sie verwenden, um Ihr System zum Laufen zu bringen. (Jre, Libs)

    • , wenn so etwas wie diese verwendet wird, ist es eine gute Idee, um sicherzustellen, dass Sie mit einer echten Kopie von was auch immer Ihre lib Herstellern veröffentlicht. Verwenden Sie ihre Prüfsummen/Signaturen/etc. um ihre Softwareintegrität bei Bedarf zu validieren und zu verifizieren. Sie müssen ihre Haftungsausschluss- und Haftungsausschlusserklärungen lesen und für den Fall, dass sie diese nicht selbst bereitstellen.

    • Im Allgemeinen ist es eine gute Idee, so wenig Vertrauen wie möglich zu haben, wenn es um andere Softwarequellen geht. Leider gibt es viele kompromittierte oder bösartige Bibliotheken, die Sicherheitsrisiken darstellen.

    • Es ist immer eine gute Idee, sicherzustellen, dass Sie eine heruntergeladene Lib freigeben, die von einem externen Herausgeber zertifiziert wurde und als solche nicht für den darin entdeckten Schadcode verantwortlich gemacht werden kann.

Um Ihre Frage zu beantworten ... es hängt wirklich von dem Client-Endpunkt und die Wahrscheinlichkeit von Ihnen, sie mit einem Sicherheitsrisiko für die Bereitstellung von (i raten Sie, immer das zu 100% erwarten verklagt). Wenn Sie für Schäden haftbar sind ... müssen Sie entsprechend vorgehen.

Kurz gesagt ... ist die bestmögliche Antwort auf diese Frage, was immer möglich ist, um sich selbst zu schützen, falls das Schlimmste passiert.

0

Benötigt Ihre Anwendung erhöhte Privilegien? Wenn das Installationsprogramm auf Windows ausgerichtet ist und Sie die Anwendung in Programme installieren möchten, muss Ihr Installationsprogramm signiert werden. Ohne diese Option gibt Windows während der Anforderung einer Privilege-Eskalation ein gelbes Banner aus.

Also - unterschreiben Sie Ihren Installateur.

Die Exe, die die Anwendung startet, sollte idealerweise ebenfalls signiert werden. Aber für eine Java-Anwendung ist dies vielleicht ein Mute-Punkt. Die exe zu signieren ist einfach genug, dass ich es sowieso machen würde.

Sign Launcher exe - Optional, aber ich würde es

Jar Dateien. Dies ist eine interessante und hängt davon ab, was Sie Ziel ist. Das heißt, das Betriebssystem und der Endbenutzer werden die signierte oder nicht signierte Art Ihres Jar wahrscheinlich nicht bemerken. Daher müssen Sie wahrscheinlich die Integrität des Glases selbst überprüfen. Siehe https://docs.oracle.com/javase/tutorial/deployment/jar/signindex.html Vielleicht kann die Launcher-Anwendung die Integritätsprüfungen vor dem Startschritt durchführen?

Bibliotheksgläser, Ähnlich wie im obigen Fall, wenn Sie sicherstellen möchten, dass niemand in ein Diff-Glas in Ihre Anwendung oder einen solchen Anwendungsfall fallen gelassen wurde, müssen Sie dies selbst verifizieren.

Java Runtime Wenn Sie diesen Versand durchführen, ist dieser nicht bereits von Oracle oder Ihrem JVM-Lieferanten signiert?