Java Applets und Java Web Start-Anwendungen starten - ab Java 7 Update 51

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Autor: Gernot Segieth

Einleitung

Nachdem man in Java's Laufzeitumgebungen (JRE) der Versionen 6 und 7 mehrere Sicherheitslöcher gefunden hatte, die auch massiv ausgenutzt wurden, war Oracle in Zugzwang und führte radikale Veränderungen in den Sicherheitsmechanismen der JRE ein, die mit Java 7 Update 51 am 14. Januar 2014 veröffentlicht wurden.

Durch die Änderungen ergaben sich erhebliche Einschnitte bei der Ausführung von unsignierten sowie signierten Java-Applets durch standardmäßig höhere Sicherheitseinstellungen im Java Control Panel. Mit diesen Einstellungen haben Applets keine Möglichkeit mehr, ausgeführt zu werden. Eigentlich ein Todesstoß für die ohnehin seltenen Java-Applets im Internet. Doch was ist z.B. mit Applets in Unternehmensnetzwerken, Intranets usw. ?

Schauen wir uns als also an, welche Möglichkeiten wir nun haben, um Java-Applets wieder zum Laufen bekommen.

Java-Applets benötigen ein Java-Plugin für Webbrowser. 
Damit Java-Applets (wieder) lauffähig werden, ist eine JRE <= 8 und oft eine ältere Version des benutzten Browsers notwendig. 
Oracle hat Java-Applets mit Veröffentlichung von Java 9 als deprecated bezeichnet.

Der Istzustand

Unsignierte Java-Applets

Unsignierte Applets können standardmäßig nun nicht mehr ausgeführt werden. Die Sicherheitseinstellungen im Java Control Panel verhindern, dass unsignierter Java-Code auf dem Client-Rechner zur Ausführung kommt.

Sollte der Browser Applets ausführen können, präsentiert die JRE folgenden, bzw. vergleichbaren Sicherheitsdialog:

Applet blocked.png

Signierte Java-Applets

Vom Programmierer selbst signierte Anwendungen werden mit den Standardsicherheitseinstellungen ebenso blockiert. Ausschließlich mit einem von kostenpflichtigen Zertifizierungsdiensten, wie bspw. Verisign (Symantec) oder Thawte, ausgestellten Zertifikat startet ein Java-Applet nun noch in der höchsten Sicherheitsstufe. Sie laufen außerhalb der Sandbox und erhalten erweiterte Rechte auf dem Client-Rechner, die alle Systemrechte des Clients einschließt.

Daher sollte signierten Applets nicht uneingeschränktes Vertrauen geschenkt werden!

Java Applets starten - ab Java 7 Update 51

Unsignierte Java-Applets

Ein unsigniertes Applet startet nun in den Standardsicherheitseinstellungen des Java Control Centers gar nicht mehr. Somit wird sichergestellt, dass potenziell schadhafter Code auf dem Client-Rechner nicht ausgeführt werden kann.

Möchte man dennoch ein unsigniertes Applet starten, kann mit einem Eingriff in die Sicherheitseinstellungen der JVM ältere und/oder nicht signierte Java-Applets wieder ausgeführt werden. Die Applets laufen in der Sandbox und können das System daher nicht gefährden.

Dazu muss der Schieberegler der Sicherheitsebene von Hoch (Mindestempfehlung) auf Mittel verschoben werden:

Control center sicherheitsebene.png


In einem Sicherheitsdialog wird nun immer noch einmal gewarnt, wenn in einer Webseite ein potenziell unsicheres Applet ausgeführt werden möchte.

Auch gut zu sehen: die JRE meldet nun auch, wenn auf dem Client eine veraltete Java-Version installiert ist.

Sicherheitswarnung.png

Hier muss nun der Haken gesetzt werden, anschließend kann das unsignierte Applet durch Klick auf den Ausführen-Button gestartet werden.

Signierte Java-Applets

Für das Signieren von Applets gibt es nun neue Regeln, ohne deren Anwendung Applets nicht ausgeführt werden.

Hinweis: Im Artikel Java-Applets und Java WebStart-Anwendungen signieren wird beschrieben, wie nun gültige Zertifikate erzeugt und Anwendungen damit signiert werden können.

Um ein selbst signiertes Applet zu starten, ist die URL der anbietenden Webseite manuell in die White List (Liste, vom Anwender als "sauber" eingeschätzter Webseiten) einzutragen.
Beispielhaft sei hier im Folgenden die Schrittfolge beschrieben:

1. Java Control Panel öffnen
In der Systemsteuerung doppelklicken wir das Java-Icon. Daraufhin öffnet sich das Java Control Panel.

1 java control panel.png


2. Java aktivieren
Jetzt wechseln wir in den Reiter Sicherheit.
Sollte der Haken bei Java-Content im Browser aktivieren noch nicht gesetzt sein, aktivieren wir Java im Browser, in dem wir hier den Haken nun setzen.

2 4 java aktivieren.png


3. Aktivierung des Java-PlugIn bestätigen
Wenn wir nun den Anwenden- oder OK-Button klicken fordert uns das Java Control Panel nun auf, die Aktivierung des Java-PlugIns zu bestätigen.
Wir möchten das Java-PlugIn für die Ausführung von Java-Applets aktivieren und klicken hier deshalb auf OK.

3 info bestaetigen.png


4. Site-Liste bearbeiten
Nun müssen wir die White List, also die Liste der URLs, bearbeiten, die wir für sicher halten. Hier tragen wir URLs von Webseiten ein, in denen Applets eingebettet sind, die wir ausführen möchten.
Dazu klicken wir auf den Button Siteliste bearbeiten...

4 white list oeffnen.png


5. Site-Liste der zugelassenen URLs
Anschließend öffnet sich dieser Dialog, in welchem wir auf den Button Hinzufügen klicken, um nun die Webseiten einzutragen, deren eingebettete Applets nicht mehr von den besonderen Sicherheitseinstellungen blockiert werden sollen. Wir erinnern uns: Alle unsignierten und alle selbst signierten Applets werden von den neuen Sicherheitseinstellungen blockiert.

5 white list oeffnen.png


6. Zugelassene URL in die Site-Liste eintragen
In das Textfeld tragen wir nun, wie im Beispielbild zu sehen, jeweils eine URL ein.

6 white list editieren.png

Dabei ist darauf zu achten, dass die URLs jeweils ohne konkrete html-Datei und mit abschließendem / abgegeben werden.

Achtung! Obige Beschreibung deckt sich mit den Oracle-Dokumentationen. Aber offenbar gibt es hier zum Teil Abweichungen, die mit der Version der JRE zusammenhängen könnten.

Daher kann es davon abhängen, ob ein Applet ausgeführt werden kann, wenn im Punkt 6 eine ungültige Angabe gemacht wird. Wenn die Ausführung nicht startet, sollte folgende Form ausprobiert werden:

Anderenfalls moniert die JRE beim späteren Versuch der Ausführung mit einem solchen Warndialog, dass etwas nicht stimmt:

Sicherheitswarnung2.png


7. Warnung zur Kenntnis nehmen
Durch das Eintragen von "sauberen" URLs zu Webseiten die Java-Applets enthalten, werden wir vor der Lockerung der Sicherheitseinstellungen mit einem Warnhinweis informiert. Möchten wir, dass die in der Site-List eingetragenen Webseiten Applets auf unserem Rechner ausführen?
Unsignierte Applets laufen in einer Sandbox und dürfen einige Dinge auf unserem System nicht machen. Zugriffe auf die lokale Verzeichnisebene ist genauso tabu, wie die VM beenden, Verbindung zu einem anderen Rechner aufnehmen, oder Systemeigenschaften auszulesen. Durch die Lockerung der Sicherheitseinstellungen könnte sich aber u.U. ein Applet bei einem bisher noch unbekannten Sicherheitsleck in der Java-VM dennoch Zugriffsrechte auf unserem System verschaffen. Um davor zu Warnen, ist dieser Warndialog eingerichtet worden.

7 warnung bestaetigen.png

Wenn wir uns sicher sind, die richtigen Seiten eingetragen zu haben, akzeptieren wir die Lockerung der Sicherheitseinstellungen durch Klicken auf den Fortfahren-Button.


8. Operation abschließen
Alle Einstellungen sind nun vollzogen, wir beenden das Java Control Center mit Klick auf Anwenden und OK und starten anschließend ggf den Browser neu.

8 einstellungen uebernehmen.png


Hello World - Applet testen

Wenn nun alle oben beschriebenen Schritte beachtet und durchgeführt wurden, startet ein signiertes Applet auf dem Client ohne weitere Warnung.
Zum Testen kann hier ein einfaches HelloWorld-Applet gestartet werden.

Die Ausgabe auf dem Bildschirm sollte so aussehen:

HelloWorld.png

Java-Applet ausführen, welches erweiterte Rechte benötigt

Oben haben wir gesehen, wie sich ein signiertes Applet verhält, das ohne erweiterte Rechte ausgeführt werden kann. Aber wie verhalten sich Applets, die auf dem Client erweiterte Rechte benötigen, um ihre Aufgabe zu erledigen?

Wenn alles in Ordnung ist, wird kein weiterer Warndialog angezeigt, das Applet wird sofort gestartet.

Voraussetzung dafür ist allerdings, dass die im Abschnitt 3.2 Signierte Applets beschriebenen Schritte durchgeführt wurden.-
Wenn hier insbesondere nicht die gezeigte URL in die Liste der "sauberen" Seiten eingetragen wurde, werden beide Applets nicht funktionieren.

Anderenfalls wird ein Sicherheitsdialog ausgegeben:

Sicherheitsdialog3.png

Beispielhaft kann hier nun ein (harmloses) signiertes Applet namens OsDetectiv ausgeführt werden, welches NUR das verwendete Betriebssystem des Benutzers in einem Dialog ausgibt, getestet werden.

Die Ausgabe auf dem Monitor wird dann so oder ähnlich aussehen:

OsDetectiv.png

Fehler! Applet startet nicht

Beide Applets wurden mit dem JDK8 kompiliert. Daher muss auf dem Client mindestens eine aktuelle JRE8 installiert sein, sonst werden die Applets nicht gestartet werden können.
Java-Code ist nicht abwärtskompatibel!

Hinweis: Die Java Laufzeitumgebung JRE sollte immer aktuell gehalten werden, um die Wahrscheinlichkeit eines Angriffs in Folge einer Sicherheitslücke in der JRE zu minimieren!

Fehler

com.sun.deploy.net.JARSigningException

Die JARSigningException wird geworfen, wenn beim Ausführen eines signierten Jar-Archivs etwas schief gegangen ist.

  • Ausschalten der Option zum Behalten temporärer Dateien: Java Control Panel -> Allgemein -> Einstellungen.
  • Alle Jar-Dateien, die in der referenzierenden Datei bspw. JNLP- (Webstart) oder HTML-Datei (Applet) müssen signiert sein.
  • Die Dateienamen dürfen außerdem keine Umlaute enthalten.
  • Folgen Sie den Anweisungen in unserem Artikel Java-Applets und Java WebStart-Anwendungen signieren

Weiterführende Links

Quellen