Java Applets und Java Web Start-Anwendungen starten - ab Java 7 Update 51
Autor: Gernot Segieth
Inhaltsverzeichnis
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:
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:
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.
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.
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.
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.
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...
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.
6. Zugelassene URL in die Site-Liste eintragen
In das Textfeld tragen wir nun, wie im Beispielbild zu sehen, jeweils eine URL ein.
Dabei ist darauf zu achten, dass die URLs jeweils ohne konkrete html-Datei und mit abschließendem / abgegeben werden.
- Richtig: http://www.beispiel.com/eineApplikation/
- Falsch: http://www.beispiel.com/eineApplikation/dateiname.html
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:
- Richtig: http://www.beispiel.com
Anderenfalls moniert die JRE beim späteren Versuch der Ausführung mit einem solchen Warndialog, dass etwas nicht stimmt:
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.
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.
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:
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:
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:
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
- Java-Applets und Java WebStart-Anwendungen signieren
- Einbinden von Java-Applets in HTML-Dateien
- Java-Applet zu Java-Applikation umschreiben
- Java-Applet wird nicht angezeigt, oder startet nicht
Quellen
- Oracle - What Applets Can and Cannot Do
- Oracle - Java Applet & Web Start - Code Signing - How do I sign my code?
- Oracle - JAR File Manifest Attributes for Security
- Oracle - What should I do when I see a security prompt from Java?
- A blog without a catchy title - Oracle Forms and Java 7u51
- Oracle - Nach dem Update auf Java 7 Update 65 können Applets nicht gestartet werden.