Page tree
Skip to end of metadata
Go to start of metadata

Neuere Java Versionen

Die Sicherheit von Java Umgebungen wird vorlaufend verbessert und vorhandene Sicherheitsprobleme (wie z.B. dieses) werden gefixt. Dies hat zu Folge, dass u.U. beim Start des Nuclos Client über Web Start Warnungen angezeigt werden. Eine Übersicht liefert 'Was muss ich tun, wenn ich einen Sicherheitshinweis von Java sehe?'.

Teilweise musste Nuclos an die neuen Sicherheitsrichtlinien angepasst werden. Im folgenden finden Sie eine Übersicht.

Java 11

Aktuell empfehlen wir Java 11, sowohl für das Oracle Java als auch für OpenJDK, dies ist die aktuellste LTS-Version, also die Version mit Long-Time-Support.

Java 9

Nuclos kann ab Version 4.25 theoretisch unter Java 9 verwendet werden. Jedoch gibt es noch einige Einschränkungen, insbesondere steht das Nuclos Look-and-Feel dann nicht zur Verfügung.

Java 8


Ab Nuclos 4.22 wird Java 8u144 vorausgesetzt.

Nuclos Server und Client laufen unter Java 8, es gibt nur folgende Einschränkungen zu beachten:

Keine Java 8 Syntax in Regeln

Betrifft Nuclos Version vor 4.23.3, 4.24.2, 4.25.0:
Über den Regeleditor kann keine Java 8 Syntax gespeichert werden, da der verwendete Source Code Parser diese nicht versteht. Siehe auch NUCLOS-5783 - Getting issue details... STATUS NUCLOS-5783.

Web Start funktioniert nicht mit Java 8u102

Aufgrund eines Java-Bugs in Version 8u102 tritt beim Start des Rich Clients über Web Start ein Deadlock auf, siehe  NUCLOS-4938 - Web Start funktioniert nicht mit Java 1.8.0_102 Gegenchecken
Der Nuclos Server sowie der Standalone Client funktionieren jedoch auch mit dieser Version.

Java 7

Aktuelle Nuclos Versionen benötigen wegen NUCLOS-2919 ein 7u51 oder höher. (Java 6u45 wird für einige Kunden ebenfalls noch unterstützt.)

Self-Signed Certificates nur noch über Ausnahmeliste - 7u51

Java Web Start Applikationen (z.B. der Nuclos Client), die mit selbst-signierten Zertifikaten unterschrieben wurden, funktionieren nur noch, wenn sie in die Ausnahmeliste des Java Control Panels (Reiter Sicherheit) eingetragen werden. Wir empfehlen die Verwendung eines richtigen (d.h. kostenpflichtigen) Zertifikats.

Keine (System-)Parameter mehr - 7u45

Ältere Nuclos Versionen starten mit 7u45 nicht mehr. Das Problem ist ab Nuclos 3.15.5 (und auch in 3.7 bis 3.14, jeweils neuste Version z.B. 3.14.17) gefixt, Details in NUCLOS-2295. Allerdings funktioniert die Einstellung 'single instance' z.Z. erst wieder in ab den Nuclos Versionen 3.15.22, 4.0.18, 4.2.2 bzw. 4.3.0, Details in NUCLOS-2569.

Notwendige Anpassungen in Extensions für Nuclos 3.15.5

Der Fix für 7u45 macht 2 Änderungen in den Extensions notwendig, die mit einer Nuclos Version, die diesen Fix enthält, zusammenarbeitet.

de.novabit:jnlp Library

Der Client eines Extension Projektes braucht neuerdings folgende Abhängigkeit in der pom.xml:

<dependency>
		<groupId>de.novabit</groupId>
		<artifactId>jnlp</artifactId>
		<version>1.0</version>
		<scope>provided</scope>
</dependency>

Diese Änderung ist nur nötig, wenn der Cient in Eclipse gestartet werden soll (betrifft also hauptsächlich Entwickler).

Ersatz für PropertySourcesPlaceholderConfigurer

Der Client Spring Context der Extension muss angepasst werden. Ersetzen Sie in der Datei client/src/main/resources/META-INF/nuclos/nuclos-extension-client-beans.xml die Zeilen:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
	<property name="properties">
		<props>
			<prop key="url.remoting">http://localhost/nuclos/remoting</prop>
			<prop key="url.jms">http://localhost/nuclos/jmsbroker</prop>
		</props>
	</property>
</bean>

mit

<!--
	 Use the new (3.1) 
	 org.springframework.context.support.PropertySourcesPlaceholderConfigurer 
	 mechanics.
	 
	 http://www.baeldung.com/2012/02/06/properties-with-spring/
	 http://spring.io/blog/2011/02/15/spring-3-1-m1-unified-property-management/
	 
	 http://blog.jamesdbloom.com/UsingPropertySourceAndEnvironment.html
	 http://java.dzone.com/articles/using-spring-profiles-xml
 -->
<!-- Resolve with nuclosPropertySource -->
<context:property-placeholder properties-ref="nuclosPropertySource" ignore-unresolvable="true" order="1"/>
<!-- no location and no properties-ref means: resolve against system properties -->
<context:property-placeholder ignore-unresolvable="false" order="100"/>

Certificate Revocation - 7u25 und 7u40

Java 7u40 wurde von uns mit Nuclos getestet. Es gelten weiterhin die Anmerkungen für Java 7u25 weiter unten.

Mit Java 7u40 kommt bei den Sicherheitshinweisen die Meldung hinzu, dass der Web Start Descriptor (*.jnlp) nicht signiert ist. Nuclos erzeugt z.Z. den Descriptor dynamisch, daher können wir kurzfristig dieser (neuen) Meldung nicht entgegen wirken.

Falls Sie eine eigene Extension verwenden, kommt u.U. mit Java 7u40 bei den Sicherheitshinweisen die Meldung hinzu, dass dem Zertifikat der Extension nicht vertraut wird. Dies geschieht genau dann, wenn Sie kein 'richtiges' Zertifikat verwenden, um Ihre Extension zu signieren. Die Meldung lässt sich unterdrücken, indem Sie ein Zertifikat kaufen und dies zum Signieren benutzen.

Die Web Start Probleme mit 1.7.0_25 (7u25) sind ab Nuclos 3.13.17 und 3.14.5 für die meisten Nuclos User beseitigt!
Lediglich Nuclos Client User, die nicht auf das Internet zugreifen können, sind von eine sehr langen Startzeit betroffen. Dies liegt an der Online Überprüfung der Zertifikate. Details weiter unten.

Um den Nuclos Client (vor 3.13.17 und 3.14.5) mit 1.7.0_25 (7u25) zu benutzen, müssen Sie im Java Control Panel manuell die Änderungen vornehmen, die weiter unten erläutert sind! Die Vorgabewerte führen dazu, dass Nuclos nicht startet!


Mit Java 7 Update 25 wurden einige Defaulteinstellungen im Java Control Panel geändert (unter Windows: Start -> Systemsteuerung -> Programme -> Java), siehe auch

http://www.oracle.com/technetwork/java/javase/7u25-relnotes-1955741.html#certrev
http://www.networkworld.com/news/2013/061913-java-7-update-25-fixes-271005.html

https://forums.oracle.com/thread/2552941

Seidem lässt sich der Nuclos Client nicht mehr starten. Es existieren aktuell folgende uns bekannte Optionen zur Umgehung dieses Problems:

1) Update auf 3.13.17 bzw. 3.14.5 (siehe http://support.nuclos.de/browse/NUCLOS-2120), das löst das Problem auf allen Betriebssystemen einschließlich Windows.

2) Aktivieren der Java Console im Java Control Panel. Dann funktioniert die Anmeldung, der Start ist aber sehr langsam.

3) Setzen der Einstellung "Check for certificate revocation using" im Java Control Panel auf "Certificae Revocation Lists (CRLs)". Das Problem scheint nach aktuellen Erkenntnissen mit dem Protokoll "OCSP" zusammenzuhängen.

Aktueller Stand

Der aktuelle Stand wird im Ticket NUCLOS-2120 getrackt. Wenn es noch Probleme gibt, nutzen Sie bitte unseren Foren-Thread Java update auf Version 7 update 25 und berichten von Ihrem Problem.

FAQ

Was empfehlen Sie?

Setzen Sie die Zertifikatsprüfung auf 'nur CRLs'. Eventuell wollen Sie die Java Installation auf den Desktop Rechnern zentral administrieren (s.u.). Nutzen Sie (möglichst) keine älteren Java Versionen als 7u25 (also kein Downgrade!).

Wie gefährlich ist es, die Zertifikatsprüfung auf 'nur CRLs' zu setzen?

Die Zertifikate werden dann immer noch überprüft, aber nur noch mit Hilfe einer von Oracle zur Verfügung gestellten Liste, die etwa 1-mal pro Tag heruntergeladen wird. Ausgeschaltet wird nur die Online Validierung des Zertifikatsherausgebers (OCSP).

Diese OCSP Überprüfung ist sehr langsam, da 7u25 für jedes JAR einzeln online überprüft, ob das Zertifikat noch gültig ist (das ist unnötig, da ja so das selbe Zertifikat viele Male überprüft wird). In neueren Nuclos Versionen versuchen wir, dieses Problem zu umgehen, indem wir viele JARs, die der Client benötigt, in ein großes JAR (<nuclos>/webapp/app/all-in-one.jar.pack.gz) zusammenfassen (allerdings nur in den Java7 Builds, da Java6 bei dieser Lösung Schwierigkeiten macht). Leider könnnen jedoch nicht alle JARs zusammengefasst werden.

Insgesamt glauben wir, dass 'nur CRL' kein sehr großes Risiko darstellt, vor allem im Vergleich mit der Ausführung einer Web Start Applikation, die alle Systemrechte (all-permissions) verlangt. Sie sollten auf diese Weise nur Anwendungen starten, die Sie kennen und denen Sie vertrauen.

Nur CRL (und keine OCSP zu verwenden) ist übrigens die Standardeinstellung des Google Chrome Browsers. Details finden sich auf Heise und in einem Google Blog.

Die Wirksamkeit von CRL und OCSP ist mittlerweile deutlich in Frage gestellt worden, siehe z.B. 'Das Sperrproblem von SSL'.

Warum funktioniert der Client Start, wenn die Console angezeigt wird?

Wir glauben, dass es ein Bug in 7u25 ist, dass ohne Console ein anderer ClassLoader für den Swing Render Thread verwendet wird. Details sind in https://forums.oracle.com/thread/2552941 zu finden. Wir benutzen in neueren Nuclos Versionen den dort vorgeschlagenen Work-around (siehe Klasse org.nuclos.common.startup.JWSClassLoaderFix). Daher sollte in diesen Versionen das Verhalten mit und ohne angezeigte Console gleich sein.

Ist es möglich die Java Control Panel Einstellungen aller Desktop Rechner zentral zu administrieren?

Wir wissen, dass es dafür kommerzielle Lösungen gibt (z.B. GPO Redux). Ab Java 7u40 wird jedoch auch eine Lösung direkt mit Oracle JRE ausgeliefert.

Was ist bei Nuclos Extensions zu beachten?

Java 7u25 verlangt neue, zusätzliche Attribute in der Manifest Datei (META-INF/MANIFEST.MF) von JARs. Dies betrifft natürlich auch die JARs von Nuclos Extensions, und zwar Client und Common (Server Extensions habe mit Web Start nichts zu tun und müssen daher auch nicht angepasst werden). Ein Manifest Template könnte wie folgt aussehen:

Manifest-Version: 1.0
Permissions: all-permissions
Codebase: *
Trusted-Only: true
Trusted-Library: true

Sollte die Extension mit Maven gebaut werden gelingt diese Anpassung am einfachsten mit dem Hinzufügen dieses Plugin-Sniplets in den Build Prozess von Client und Common:

 <!-- sniplet zum Einbau in eine pom.xml Datei -->
           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Permissions>all-permissions</Permissions>
                            <Codebase>*</Codebase>
                            <Trusted-Only>true</Trusted-Only>
                            <Trusted-Library>true</Trusted-Library>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>

Es funktioniert nicht! Wie kann ich Hilfe bekommen?

Sie können einen Fehlerreport in das Ticket System einstellen oder eine Nachricht im Foren Thread Java update auf Version 7 update 25 posten.


1 Comment

  1. Sowohl Nuclos Server und Client Version >= 4.42 funktioniert mit OpenJDK 11 und 13.
    Der Sourcecode Editor funktioniert mit diesen Java Versionen erst ab Client Version 4.43