Oracle Fusion Middleware Blog

Deutsche Informationen rund um Oracle Fusion Middleware

Stabiler Betrieb von Oracle Forms-Applikationen mit Deployment Rule Sets (DRS)

with one comment

Oracle Forms-Anwendungen laufen seit vielen Jahren als Java Applet im Browser und benötigen dazu das Java Plug-In im Browser.
Anwender von Oracle Forms stehen vor dem Problem, dass sie nicht in der Lage sind, ihre Anwendungen mit jedem Update des Java Runtime Environments (JRE) zu testen. Zwar gibt es inzwischen die Möglichkeit, neue Java-Versionen als Early Access Releases vorab zu testen (z.B. https://jdk7.java.net/download.html). Dies gilt aber nicht für Security Updates, die ohne Vorankündigung veröffentlicht werden und eventuelle Seiteneffekte in den Forms-Anwendungen verursachen.

Forms-Anwender stecken gewissermaßen in einem Dilemma zwischen Sicherheit (was das Einspielen der aktuellen Security Patches erfordert) und Stabilität (was die Nutzung gründlich getesteter Java-Versionen erfordert). Eine Lösung liegt in der Nutzung der Java  Deployment Rule Sets (DRS), die seit dem JDK 7 Update 40 zur Verfügung stehen. Sie bieten u.a. die Möglichkeit, durch Regeln das Ausführen bestimmter Anwendungen mit bestimmten Java-Versionen festzulegen. Diese Lösung ist insofern auch akzeptabel, da Forms-Applikationen typischerweise im Intranet laufen und hier die Bedrohung durch Sicherheitslücken kaum gegeben ist. Für alle anderen Anwendungen kann die Nutzung der aktuellsten Java-Version oder sogar ein Blockieren der Ausführung festgelegt werden. Deployment Rule Sets können in Verbindung mit Java Applets und WebStart-Anwendungen eingesetzt werden.

Informationen zu den Deployment Rule Sets findet man an folgenden Stellen:
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/deployment_rules.html
https://blogs.oracle.com/java-platform-group/entry/introducing_deployment_rule_sets
https://blogs.oracle.com/java-platform-group/entry/deployment_rule_set_by_example

Die Regeln werden in einer XML-Datei (ruleset.xml) festgelegt und zur Ausführungszeit sequentiell abgearbeitet. Neben der Festlegung bestimmter Versionen der JRE können mit Hilfe von Regeln u.a. auch Warnungen unterdrückt sowie die Ausführung von Anwendungen blockiert werden.

Es folgt eine Beschreibung der wesentlichen Schritte zum Einrichten eines Deployment Rule Sets (DRS) zum Ausführen einer Forms-Applikation mit einer bestimmten festgeschriebenen Version der JRE. Da ich nicht auf ein kommerzielles Zertifikat zurückgreifen konnte, entstand der größte Aufwand bei der Erstellung und Einbindung eines eigenen Zertifikats. Auf dem Arbeitsplatz muss eine aktuelle Java-Version (JRE > Java 7 Update 40) installiert sein, die das DRS erkennt und ausführt. Diese startet dann eine zweite Java-Version (dies kann auch eine JRE 6 sein), mit der die Forms-Applikation ausgeführt wird.

  1. URL oder Hash Sign der Anwendung ermitteln, für die eine Regel festgelegt werden soll. Im Falle von Oracle Forms wäre dies z.B. die folgende URL: http://jmenge-de.de.oracle.com:7001/forms/frmservlet.
  2. Anlegen einer Datei ruleset.xml zum Beispiel mit folgendem Inhalt:
    <ruleset version="1.0+">
      <rule>
        <id location="http://jmenge-de.de.oracle.com:7001/forms/frmservlet" />
        <action permission="run" version="1.7.0_25"/>
      </rule>
      <rule>
        <id />
        <action permission="block" />
      </rule>
    </ruleset>
    

    Die Regeln bewirken, dass die Forms-Anwendungen (URL) immer mit der Version 1.7.0_25 ausgeführt werden. An dieser Stelle kann aber auch eine ältere Java-Version (JRE 6) aufgerufen werden.
    Alle anderen Anwendungen (Applets, Java WebStart) werden durch die zweite Regel blockiert.

  3. Die Datei ruleset.xml muss in ein jar-Archiv mit dem Namen DeploymentRuleSet.jar gepackt werden. Dies erfolgt mit dem Befehl:
    jar -cvf DeploymentRuleSet.jar ruleset.xml
    Wichtig ist, dass sich alle Dateien im gleichen Verzeichnis befinden. Die Datei ruleset.xml darf nicht mit einer Pfadangabe im Archiv stehen.
  4. Als nächstes muss das jar-Archiv signiert werden. Das erforderliche Zertifikat kann von einer Certificate Authority (CA) angefordert oder selbst erstellt werden.
    Eine Anleitung zur Signierung mit einem eigenen Zertifikat findet man hier:
    https://blogs.oracle.com/java-platform-group/entry/self_signed_certificates_for_a
    Das signierte jar-Archiv kann anschließend mit dem Befehl
       jarsigner -verify DeploymentRuleSet.jar
    überprüft werden.
  5. Das jar-Archiv muss in ein bestimmtes Verzeichnis auf dem Desktop des Endanwenders kopiert werden. Bei einem MS Windows-System heißt dieses Verzeichnis:
    <Windows Directory>\Sun\Java\Deployment
    und wird in der Regel neu anzulegen sein.
    In der Java Console (Tab Security) kann man jetzt überprüfen, ob das Deployment Rule Set auch tatsähchlich erkannt wurde.
    JavaConsole
  6. Zum Testen muss man jetzt nur noch die Forms-Anwendung übr die festgelegte URL aufrufen.
    Zunächst wird die aktuelle (d.h. sicherste) Version der JRE gestartet. Diese interpretiert das Deployment Rule Set und ruft auf Grund unserer definierten Regel eine ältere (getestete) Version des JRE auf. Dies kann man sehr gut im System Tray von MS Windows erkennen, da nach erfolgreicher Ausführung dort zwei Java-Icons zu sehen sind.
    SystemTray
    Schlägt der Aufruf fehl, geben die Fehlermeldungen einen Hinweis auf die Ursache (z.B. Can not verify self-signed DeploymentRuleSet.jar.).

Wir haben damit erreicht, dass die internen Forms-Anwendungen mit einer stabilen und getesteten Version der JRE ausgeführt werden. Rufen die Anwender eine andere Anwendung (Applet, Java WebStart) im Browser auf, wird die aktuellste Version der JRE verwendet oder wie in unserem Beispiel die Ausführung blockiert.
Die Verwendung der Deployment Rule Sets ist in Verbindung mit Oracle Forms-Anwendungen offiziell supported.

<JM>

 

Written by fmtechteam

07/05/2014 um 11:54

Veröffentlicht in Forms, Java, Jürgen Menge

Eine Antwort

Subscribe to comments with RSS.

  1. Hallo,
    es gibt in dem aktuellen Zweig der Version 7 einen Bug der das ganze wieder lächerlich werden lässt…

    https://bugs.openjdk.java.net/browse/JDK-8032781

    Einzige Version die momentan (nach dem testen 7 verschiedenen builds) funktioniert ist die 1.8.0_05-b31
    Dann können auch die 1.7er static Installationen wieder angesprochen werden aus Applets.
    Die Version muss unter Configure Java -> Reiter Java -> Button Ansicht -> Reiter System eingetragen sein, steht dort eine andere so wird die fehlerhafte Funktion genutzt.
    Dann beide Versionen deinstallieren, die 1.8.0_05-b31 installieren und danach die ältere(nach Bedarf mit STATIC=1) wieder installieren.

    Die neuere 1.8.0_11 funktioniert wiederum NICHT. (public build)

    Vielleicht erspart es ja jemandem Zeit…

    Gruß
    Ralf

    Ralf

    18/07/2014 at 11:23


Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: