colinardo
Goto Top

Explizites Freigeben von bestimmten Java-Applets im Browser via Deployment-Config (Sicherheitswarnung deaktivieren)

back-to-top1. Einleitung

Wie Ihr wahrscheinlich wisst hat Oracle seit der Java Runtime 7 Update 21 einen zwingenden Bestätigungsdialog für Java-Applets welche im Browser ausgeführt werden, eingeführt.

69951efc2c4fa86d8f5e2488877305bf

Dies fördert auf jeden Fall die Sicherheit im Browser erheblich, jedoch gibt es sicher Einige unter euch bei denen dies die Usability beim Endanwender nicht erlaubt, z.B. in Unternehmen, und Anwendungen die von vielen Nutzern genutzt werden.

Diese Anleitung gibt einen Leitfaden, wie man bestimme Applets in eine Whitelist befördert, und die Ausführung des Applets dann nicht mehr vom Enduser bestätigt werden muss.

back-to-top2. Benötigte Tools


Hinweis: Alle hier verwendeten Kommandozeilen-Tools befinden sich im bin-Verzeichnis des Java JDK:
C:\Program Files\Java\[JDK VERSION]\bin
Hinweis: Unter Punkt 10 gibt es ein Batch-Script das die folgenden Schritte zusammenfasst.

back-to-top3. Erstellen eines Ruleset (ruleset.xml)

Zu aller erst müssen wir festlegen welche Internet-Seiten wir freischalten möchten. Dazu erstellen wir eine XML-Datei mit dem Namen ruleset.xml
<ruleset version="1.0+">  
  <rule>
    <id location="http://www.oracle.com/technetwork/java/" />  
    <action permission="run" />  
  </rule>
  <rule>
    <id />
    <action permission="default" />  
  </rule>
</ruleset>
Wo das Stammverzeichnis eingetragen wird seht ihr ja. Für ein Beispiel geben wir die Demo-Applets auf der Oracle-Seite zur Ausführung frei. Die Ausführung ohne Bestätigung legt das <action permission="run" /> fest. Sollen z.B. Applets auf einer bestimmten Seite nicht ausgeführt werden dürfen machen wir das mit <action permission="block" />.

Die zweite Regel ohne Angabe einer URL besagt das für alle anderen Seiten Standardmäßig eine Bestätigung angefordert wird. Diese Regel sollte als letztes im Ruleset eingefügt werden (Die Reihenfolge zählt!"). Will man alle anderen Seiten blocken setzt man bei dieser letzten Regel <action permission="block" /> so hat man dann eine Whitelist eingerichtet.

Was damit sonst noch alles möglich ist könnt Ihr hier nachlesen.
back-to-topSonderfälle (Verwendung des SHA256 Hash einer JAR-Datei):
Bei bestimmten Seiten die eine Java-Workspace-Datei des Typs *.jnlp laden ist es oft nötig den Zertifikatshash der verwendeten JAR-Dateien ebenfalls im ruleset zu hinterlegen. Dazu macht man folgendes um an den SHA256 Hash des JAR-Files zu kommen:
Die Anwendung im Browser laden und die zusätzlichen JAR-Dateien in den Cache laden lassen. Diese werden im Verzeichnis
C:\Users\%username%\AppData\LocalLow\Sun\Java\Deployment\cache
in einem der diversen Unterverzeichnisse abgelegt, aber, jetzt kommt es, diese haben nicht die Endung *.jar sondern kryptische Namen. Man kann sie nur anhand eines Hex-Editors, anhand der Größe, oder des Datums als JAR-Dateien identifizieren. Dann wird diese Datei kopiert, mit der Endung *.jar versehen, und mit folgender Befehlszeile lässt man sich dann den Hash anzeigen:
keytool.exe -printcert -jarfile PfadzumJarFile.jar | more
In der Ausgabe steht dann auf der ersten Seite von More folgendes:
Zertifikat-Fingerprints: MD5: 7A:5D:5B:48:56:A8:FE:4D:0D:2F:36:A3:93:2F:83:C6 SHA1: 78:63:2D:11:D0:B0:00:B7:1F:2E:C5:33:F4:55:7D:80:47:9C:91:03 SHA256: 9B:F2:D5:01:32:26:2B:B1:8E:EC:D6:76:12:DD:F6:50:19:0A:5E:A4:67:FB:79:0E:3E:05:7D:72:3F:83:D1:4A Signaturalgorithmusname: SHA1withRSA Version: 3

Zertifikat-Fingerprints: 
         MD5:  7A:5D:5B:48:56:A8:FE:4D:0D:2F:36:A3:93:2F:83:C6 
         SHA1: 78:63:2D:11:D0:B0:00:B7:1F:2E:C5:33:F4:55:7D:80:47:9C:91:03 
         SHA256: 9B:F2:D5:01:32:26:2B:B1:8E:EC:D6:76:12:DD:F6:50:19:0A:5E:A4:67:FB:79:0E:3E:05:7D:72:3F:83:D1:4A 
         Signaturalgorithmusname: SHA1withRSA 
         Version: 3
Hier nehmen wir alle hexadezimalen Zahlen hinter SHA256: und entfernen daraus die Doppelpunkte; dies ist dann der Hash welcher mit folgender Rule zusätzlich in die XML-Datei eingetragen wird.
  <rule> 
    <id> 
      <certificate hash="9BF2D50132262BB18EECD67612DDF650190A5EA467FB790E3E057D723F83D14A" /> 
    </id> 
    <action permission="run" /> 
  </rule> 
Aber wie oben schon erwähnt, ist auf die Reihenfolge zu achten; diese Regel also noch vor der Default-Regel einfügen!

back-to-top4. Verpacken des Ruleset in einem JAR-Archiv

Unsere XML-Datei muss nun in ein JAR-Archiv gepackt werden welche den Namen DeploymentRuleSet.jar bekommen muss. Dies geschieht mit dem Kommandozeilentool jar.exe im bin-Verzeichnis des JDK.
jar.exe cf DeploymentRuleSet.jar ruleset.xml
ACHTUNG ! Zu Beachten gilt es hier, dass man sich beim Ausführen des Befehls im selben Verzeichnis wie die ruleset.xml befinden sollte, damit diese nicht in einem Unterordner innerhalb der JAR-Datei landet. Am einfachsten ist es wenn Ihr die ruleset.xml im JDK-Verzeichnis erstellt oder aber den gesamten Pfad zur jar.exe in der Befehlszeile angebt.

73525579d61ba42b024e09c4a70c41ee

Überprüfen könnt Ihr das z.B. mit dem JavaDecompiler

Dieses JAR-Archiv muss nun mit einem Zertifikat signiert werden, damit es akzeptiert wird. Dies machen wir nun in den nächsten Schritten.

back-to-top5. Erstellen eines Zertifikats-Keystore

Für das Beispiel erstellen wir ein selbstsigniertes Zertifikat.
keytool.exe -genkey -keyalg RSA -alias myalias -keystore keystore.jks -storepass GEHEIM -validity 720 -keysize 2048
Hier verwenden wir für das Zertifikat den Alias-Namen myalias und das Passwort GEHEIM. Das Zertifikat wird dann in einen Keystore mit dem Namen keystore.jks gespeichert.
Nach drücken von ENTER, werden die Informationen für das Zertifikat abgefragt die man alle entsprechend einträgt:

70ad3e60b260aaf276fe7d58931494e3

back-to-top6. Signieren der DeploymentRuleSet.jar

Da wir nun den entsprechenden Zertifikats-Store zur Verfügung haben können wir das JAR-File damit signieren:
jarsigner.exe -keystore keystore.jks -storepass GEHEIM DeploymentRuleSet.jar myalias
Da dieses Zertifikat ja ein selbstsigniertes Zertifikat ist müssen wir es erst noch in den Zertifikatsspeicher von Windows in die "Vertrauenswürdige Stammzertifizierungsstellen" importieren, wenn wir nur den Internet Explorer als Browser verwenden wollen (wie man das Zertifikat global für alle Browser freischaltet steht unter Punkt 7). Dazu exportieren wir das Zertifikat aus dem Keystore in eine Datei:
keytool.exe -export -alias myalias -file meinZertifikat.crt -keystore keystore.jks
Um es nun zu importieren klicken wir doppelt auf das Zertifikat, wählen "Zertifikat installieren", klicken auf weiter, wählen dann "Alle Zertifikate in folgendem Speicher speichern", aktivieren die Option Physikalischen Speicher anzeigen und dann den Ordner "Vertrauenswürdige Stammzertifizierungsstellen\Lokaler Computer". Abschließend alle Dialoge mit OK abschließen. Zusätzlich stellen wir sicher das die Option Zertifikate und Schlüssel im Browser-Keystore verwenden in den Java-Einstellungen gesetzt ist:

445a3612b9875dee16bc8ddca5b01eb5

back-to-top7. Verwenden von anderen Browsern als dem Internet Explorer

Wenn man auch andere Browser als den Internet-Explorer verwenden möchte (Firefox, etc) muss man das selbstsignierte Zertifikat in den Java-CA-Zertifikatsstore importieren. Wenn Ihr das nicht benötigt könnt Ihr zu Punkt 8 übergehen.

back-to-top7.1 Importieren des eigenen Zerfifikats in den CA-Keystore von Java
(Dabei muss der Pfad je nach Java-Version(32/64-Bit) und der Pfad zum eigenen Zertifikat entsprechend angepasst werden. Den Alias können wir frei wählen, er sollte aber eindeutig sein)

32-Bit Java Runtime 7
keytool.exe -import -alias myalias -file "C:\meinZertifikat.crt" -keystore "C:\Program Files (x86)\Java\jre7\lib\security\cacerts"
64-Bit Java Runtime 7
keytool.exe -import -alias myalias -file "C:\meinZertifikat.crt" -keystore "C:\Program Files\Java\jre7\lib\security\cacerts"
Es kommt dann eine Passwortabfrage für den CA-Store, das Passwort lautet changeit. Danach muss man den Import noch mit der Eingabe von Ja bestätigen. Ab jetzt vertraut Java dem Zertifikat. Eventuell geöffnete Browserfenster müssen einmal geschlossen und wieder geöffnet werden.

back-to-top7.2 (Bei Bedarf) Entfernen des Zertifikates aus dem CA-Keystore
Will man das eigene Zertifikat wieder aus dem CA-Store entfernen genügt folgender Befehl
(Hierbei verwenden wir wieder den Alias den wir beim Import verwendet haben; auch hier wird man wieder nach dem Passwort für den Keystore gefragt (changeit). Nachdem man es eingegeben hat, wird das Zertifikat entfernt und im Erfolgsfall keine Meldung ausgegeben.)

32-Bit Java Runtime:
keytool.exe -delete -alias myalias -keystore "C:\Program Files (x86)\Java\jre7\lib\security\cacerts"
64-Bit Java Runtime:
keytool.exe -delete -alias myalias -keystore "C:\Program Files\Java\jre7\lib\security\cacerts"


back-to-top8. Kopieren der DeploymentRuleSet.jar in das Java-Deployment-Verzeichnis

Abschließend kopieren wir die signierte DeploymentRuleSet.jar in folgenden Ordner:
C:\Windows\Sun\Java\Deployment
Um zu überprüfen ob das Ruleset erfolgreich erkannt wurde, öffnen wir die Java-Einstellungen in der Systemsteuerung von Windows und wechseln auf den Tab Sicherheit. Dort sollte nun ein Link erscheinen mit dem man das Ruleset und dessen Details anzeigen kann.

f2f7fa50189488407a7d1db8dcd12c9b

6e0c54bb227885368ea5b671330f0ab4

Nun kann man mit einem Browser z.B. die Demo Applets von Oracle ansehen ohne eine Bestätigung abnicken zu müssen:
http://www.oracle.com/technetwork/java/index-135948.html


back-to-top9. Verwenden von gültigen Zertifikaten zum Signieren

Das selbstsignierte Zertifikat genügt bereits für Testzwecke. Im Produktivbetrieb sollte aber ein Zertifikat einer bekannten Certification Authority (CA) vorhanden sein. Um ein solches Zertifikat zu erhalten, sind zwei Schritte durchzuführen:

back-to-top9.1 Zertifikatsantrag (Certificate Signing Request) erstellen
Es muss ein Zertifikatsantrag für das Schlüsselpaar im Keystore erstellt werden, der an die CA übermittelt wird. Die CA prüft diesen Antrag gemäß ihren Richtlinien und erteilt dann das Zertifikat. Der Zertifikatsantrag kann mit dem folgenden Kommando generiert werden:
keytool.exe -certreq -alias myalias -keystore keystore.jks -file certrequest.csr
Die so erzeugte Datei muss dann zusammen mit weiteren Daten, die von der CA gewünscht werden, an diese übermittelt werden.

back-to-top9.2 Zertifikat in den Keystore importieren
Hat die CA das Zertifikat ausgestellt, wird es zugeschickt oder kann heruntergeladen werden. Dann muss es noch in den Keystore importiert werden. Dies erfolgt mit:
keytool.exe -import -alias myalias -keystore keystore.jks -file cert.crt


back-to-top10. Batchdatei zur einfachen Erstellung der DeploymentRuleSet.jar

Für all diejenigen unter euch die das ganze etwas beschleunigen möchten, hier noch ein Batch-File das die nötigen Schritte zusammenfasst. Speichert euch den Code als *.bat oder *.cmd in einem Verzeichnis eurer Wahl zusammen mit eurer erstellten ruleset.xml Datei, passt die Variablen in den Zeilen 4,6,8 und 10 entsprechend an eure Umgebung an und startet das Script.
Alle Pfadangaben bitte ohne abschließenden Backslash
@echo off & setlocal
:: ##### Variablen ######
:: Pfad des Java-JDK-Bin Verzeichnisses angeben
set "JDK_PATH=C:\Program Files\Java\jdk1.7.0_09\bin"  
:: Pfad zum Java Runtime Environment JRE angeben [wird nur benoetigt wenn das Zertifikat in den CA-Keystore von Java importiert werden soll]
set "JRE_PATH=C:\Program Files (x86)\Java\jre7"  
:: Einen Alias für das Zertifikat vergeben
set CERT_ALIAS=MyCert
:: Password für den Keystore vergeben
set KEYSTORE_PASS=GEHEIM
:: #######################

set "path=%JDK_PATH%;%path%"  

:: Erstellen der JAR-Datei mit dem Ruleset
jar.exe cf DeploymentRuleSet.jar ruleset.xml 

:: Erstellen eines Zertifikatskeystore
if not exist keystore.jks (
  echo Im ersten Schritt erstellen sie ein Zertifikats-Keystore [Ergaenzen sie die Informationen fuer das Zertifikat]
  keytool.exe -genkey -keyalg RSA -alias %CERT_ALIAS% -keystore keystore.jks -storepass %KEYSTORE_PASS% -validity 720 -keysize 2048
) else (
  echo Keystore bereits vorhanden, benutze diesen zum signieren...
)

:: Siginieren des JAR-Files mit dem Zertifikat aus dem erzeugten Keystore
echo Signiere die DeploymentRuleset.jar ...
jarsigner.exe -keystore keystore.jks -storepass %KEYSTORE_PASS% DeploymentRuleSet.jar %CERT_ALIAS% >nul

:: Zertifikat für eine eventuelle Verwendung als *.crt exportieren
echo Exportiere das Zertifikat aus dem Keystore in eine *.crt Datei ...
keytool.exe -export -alias %CERT_ALIAS% -file "%CERT_ALIAS%.crt" -keystore keystore.jks -storepass %KEYSTORE_PASS%  

:: Zertifikat in den JAVA CA-Keystore importieren
set /p answer=Moechten Sie das Zertifikat in die vertrauenswürdigen CA-Store von Java importieren (j/n)?
if /i "%answer%" NEQ "j" goto CERTWINDOWS  
keytool.exe -import -alias %CERT_ALIAS% -file "%CERT_ALIAS%.crt" -keystore "%JRE_PATH%\lib\security\cacerts" -storepass changeit  

:CERTWINDOWS
:: Zertifikat in die vertrauenswürdigen Stammzertifizierungsstellen importieren
set /p answer=Moechten Sie das Zertifikat in den Windows-Zertifikatsspeicher importieren (j/n)?
if /i "%answer%" NEQ "j" goto COPYDEPLOYMENT  
certutil -addstore "ROOT" "%CERT_ALIAS%.crt"  

:COPYDEPLOYMENT
:: DeploymentRuleSet.jar in dem Deployment-Ordner kopieren
echo Kopiere DeploymentRuleSet.jar nach "%systemroot%\sun\java\Deployment"  
if not exist "%systemroot%\sun\java\Deployment" md "%systemroot%\sun\java\Deployment"  
copy /y DeploymentRuleSet.Jar "%systemroot%\sun\java\Deployment"  
echo.
echo Fertig.
echo.
pause

Viel Spaß face-smile

Grüße @colinardo
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate

Updates

DatumÄnderungen / Hinweise
03.06.2014 + Punkt 10: Batch-Script zur Vereinfachung der ganzen Prozedur hinzugefügt
+ Expliziterer Hinweis mit Bildern auf die Wichtigkeit der Pfade beim Erstellen der JAR-Datei
15.01.2014Seit Java Runtime 7 Update 51 gibt es auch ein Interface in den Java-Einstellungen um Seiten explizit freizugeben. Bei Verwendung dieser Liste wird jedoch trotzdem noch ein Dialog angezeigt der bestätigt werden muss. Wird dennoch ein Deployment-Ruleset verwendet haben diese Vorrang vor den Einstellungen im Dialog.

Content-Key: 224947

Url: https://administrator.de/contentid/224947

Printed on: April 16, 2024 at 08:04 o'clock

Member: marcel.epp
marcel.epp Jan 30, 2014 at 09:33:45 (UTC)
Goto Top
Leider funktioniert das bei mir nicht.

Ich bekomme Fehlermeldungen das die Jar-Datei des Deployment-Regelsets nicht verifiziert werden kann. Und das die Anwendung nicht ausgeführt werden kann. Wir benutzen Java 7 update 51. Irgendwie spontan eine Ahnung woran das liegen kann?
Member: colinardo
colinardo Jan 30, 2014 updated at 10:01:35 (UTC)
Goto Top
Zitat von @marcel.epp:

Leider funktioniert das bei mir nicht.

Ich bekomme Fehlermeldungen das die Jar-Datei des Deployment-Regelsets nicht verifiziert werden kann. Und das die Anwendung nicht
ausgeführt werden kann. Wir benutzen Java 7 update 51. Irgendwie spontan eine Ahnung woran das liegen kann?

Ihr habt vermutlich das Zertifikat womit Ihr das DeploymentRuleSet.jar signiert habt nicht an den richtigen Stellen importiert.
Bitte alles genau lesen, dann geht das einwandfrei!

Grüße Uwe
Member: marcel.epp
marcel.epp Jan 30, 2014 at 10:15:16 (UTC)
Goto Top
Also unter Punkt 7.1 funktioniert das nur wenn man Gänsefüsschen beim Pfad zum Zertifikat setzt:

keytool.exe -import -alias dbuttons -file "C:\Program Files (x86)\Java\jdk1.7.0_51\bin\dbuttonsZertifikat.crt" -keystore "C:\Program Files (x86)\Java\jre7\lib\security\cacerts"
Member: colinardo
colinardo Jan 30, 2014 updated at 10:23:25 (UTC)
Goto Top
Zitat von @marcel.epp:
Also unter Punkt 7.1 funktioniert das nur wenn man Gänsefüsschen beim Pfad zum Zertifikat setzt:
Das ist doch klar wenn Leerzeichen im Pfad sind, so was setze ich voraus das dies bekannt ist ...

bitte solche Kleinigkeiten via PM um den Thread hier nicht voll zu müllen... Danke.

Grüße Uwe
Member: Fiasko
Fiasko Feb 28, 2014 updated at 13:28:10 (UTC)
Goto Top
> Ich bekomme Fehlermeldungen das die Jar-Datei des Deployment-Regelsets nicht verifiziert werden kann. Und das die Anwendung
nicht
> ausgeführt werden kann. Wir benutzen Java 7 update 51. Irgendwie spontan eine Ahnung woran das liegen kann?

Ihr habt vermutlich das Zertifikat womit Ihr das DeploymentRuleSet.jar signiert habt nicht an den richtigen Stellen importiert.
Bitte alles genau lesen, dann geht das einwandfrei!


Mal abgesehen davon, dass ich das gleiche Problem habe, frage ich mich eher ob das nicht an einem falschen Zertifikatshash liegt.
Bei uns ist es so, dass wir eine jnlp-Datei öffnen müssen.
Diese habe ich mir mal mit Notepad++ angesehen und festgestellt, dass diverse jar-Dateien geöffnet werden.
Kann es daher sein, dass man von jeder jar-Datei die in der jnlp-Datei angegeben ist, den Zertifikatshash benötigt?

Auszug aus der jnlp-Datei:

<jar href="Main.jar"/>
<jar href="/common/dermalog-client-1.1-SNAPSHOT.jar"/>
<jar href="/common/syncview-1.0.0.1.jar"/>
<jar href="common/antlr-2.7.6.jar"/>
<jar href="common/c3p0-0.9.1.jar"/>
...
Member: colinardo
colinardo Feb 28, 2014 updated at 17:11:23 (UTC)
Goto Top
Zitat von @Fiasko:
Kann es daher sein, dass man von jeder jar-Datei die in der jnlp-Datei angegeben ist, den Zertifikatshash benötigt?
Wenn zum signieren jeder JAR-Datei unterschiedliche Zertifikate genutzt werden, ja.

Grüße Uwe
Member: Fiasko
Fiasko Feb 28, 2014 updated at 16:54:05 (UTC)
Goto Top
Und woran erkenne ich das?
Member: colinardo
colinardo Feb 28, 2014, updated at Mar 01, 2014 at 11:09:00 (UTC)
Goto Top
Zitat von @Fiasko:
Und woran erkenne ich das?
indem du die Hashes der Zertifikate der JAR-Dateien miteinander vergleichst. Wie man diese Hashes extrahiert steht unter Punkt 3 der Anleitung (Sonderfälle). Unterschiedliche Hashes = Unterschiedliche Zertifikate.

Bitte weitere Nachrichten via PM. Danke.
Member: bossos
bossos Mar 17, 2014 at 11:59:16 (UTC)
Goto Top
Ich bekomme folgenden Fehler wenn ich versuche das Zertifikat in den CA-Keystore von JAVA aufzunehmen:

Keytool-Fehler: java.lang.Exception: Eingabe kein X.509-Zertifikat
Member: colinardo
colinardo Mar 17, 2014 at 12:01:59 (UTC)
Goto Top
Zitat von @bossos:
Ich bekomme folgenden Fehler wenn ich versuche das Zertifikat in den CA-Keystore von JAVA aufzunehmen:
Keytool-Fehler: java.lang.Exception: Eingabe kein X.509-Zertifikat
Die Fehlermeldung ist ja deutlich ... falsches Format deines Zertifikates

Grüße Uwe
Member: bossos
bossos Mar 17, 2014 at 12:06:31 (UTC)
Goto Top
Ist mir schon klar, aber ich habs genau nach deiner Anleitung erstellt, warum ist es dann also falsch.
Member: colinardo
colinardo Mar 17, 2014 updated at 12:10:00 (UTC)
Goto Top
Zitat von @bossos:
Ist mir schon klar, aber ich habs genau nach deiner Anleitung erstellt, warum ist es dann also falsch.
Hast du denn das Zertifikat nach dem erstellen des Keystores auch wieder als *.crt exportiert ?
Hier geht das alles einwandfrei. Ohne weitere Info von dir kann ich da nur ins Blaue raten ...
Member: bossos
bossos Mar 17, 2014 at 12:18:28 (UTC)
Goto Top
Habe es nochmal neu exportiert nun funktioniert es.

THX
Member: bossos
bossos Mar 19, 2014 at 11:22:30 (UTC)
Goto Top
Ich bekomme nun immer die Meldung.
"Exception beim Parsen der Deployment-Regelsetdatei" im IE

Ich finde nichts zu diesem Fehler.
eine Idee woran das liegen kann? Das Zertifikat ist sowohl im Java CA als auch in Windows installiert.
Oder ist eventuell in meiner ruleset.xml ein Fehler?
Member: colinardo
colinardo Mar 19, 2014 at 11:24:30 (UTC)
Goto Top
Zitat von @bossos:
Ich bekomme nun immer die Meldung.
"Exception beim Parsen der Deployment-Regelsetdatei" im IE
Oder ist eventuell in meiner ruleset.xml ein Fehler?
Vermutlich, leider kann ich nicht hellsehen wie diese aussieht face-wink
Member: Fiasko
Fiasko Mar 19, 2014 at 11:37:51 (UTC)
Goto Top
Hast du das ganze Prozedere direkt im Java/bin-Ordner durchgeführt?

Ansonsten kannst du die erstellte .jar-Datei auch mit Winrar entpacken und dir anschauen wie die darin enthaltene XML-Datei tatsächlich aussieht.
Vielleicht kommst du so dem Fehler auf die Spur.
Member: colinardo
colinardo Mar 19, 2014 updated at 13:08:44 (UTC)
Goto Top
Zitat von @Fiasko:

Hast du das ganze Prozedere direkt im Java/bin-Ordner durchgeführt?

Ansonsten kannst du die erstellte .jar-Datei auch mit Winrar entpacken und dir anschauen wie die darin enthaltene XML-Datei
tatsächlich aussieht.
Vielleicht kommst du so dem Fehler auf die Spur.

hab ich ihm grade schon via PM erläutert face-wink
-edit- der Grund bei @bossos war ein fehlendes ">" im Root-Tag der XML-Datei ! Kleiner Fehler große Wirkung ....
Member: Fiasko
Fiasko Mar 19, 2014 at 11:42:38 (UTC)
Goto Top
Sehr gut ... für manche Probleme sollte man innerhalb eine Chats einen eigenen Chatraum anlegen ... das täte mitunter viel helfen ;)
Member: Red-Peace
Red-Peace Apr 11, 2014 at 12:04:49 (UTC)
Goto Top
Hallo,

ich habe das vor einer Woche bei uns in der Firma umgesetzt.
Hat auch alles gut geklappt.

Nun ist es aber so das ich an meinem Rechner (Win7 64Bit, JRE7u45) folgende Fehlermeldung
in Firefox und Chrome bekomme: Selbstsignierte JAR-Datei des Deployment-Regelsets kann nicht verifiziert werden.

Das einzige was sich verändert hatte war, dass aus versehen JRE7u51 installiert wurde.
Diese habe ich aber wieder deinstalliert und JRE7u45 neu installiert.

Auch ein erneutes signieren und importieren des Zertifikates in die Vertrauenswürdigen Stammzertifizierungsstellen
hat keine Abhilfe gebracht.

Über einen Lösungsvorschlag währe ich sehr dankbar!

Grüße!

Gero
Member: colinardo
colinardo Apr 11, 2014 updated at 12:36:03 (UTC)
Goto Top
Hallo Gero,
siehe Punkt 7.1 du musst dein Zertifikat für andere Browser in den Java-Keystore importieren, da dieser bei einem Update der Runtime überschrieben wird.

Grüße Uwe
Member: Red-Peace
Red-Peace Apr 11, 2014 at 12:51:14 (UTC)
Goto Top
Hi Uwe,

vielen Dank für deinen Tipp.
Das hatte ich schon gemacht
.
Aber auf Grund deines Posts habe ich das jetzt nochmal gemacht.
Dabei hat's klick gemacht.
Auf C:\ lag noch das "alte" Zertifikat....

Somit konnte das nicht klappen.
Also nochmal Zertifikat aus keystore entfernt, neues Zertifikat nach C: kopiert
und dann wieder dem Keystore hinzugefügt.

Siehe da, klappt wieder.... face-smile

Nochmals Danke und ein schönes Wochenende!

Grüße

Gero
Member: T-N-T01
T-N-T01 May 20, 2014 at 15:52:29 (UTC)
Goto Top
Hi,

habe das auch bei uns hier in der Firma Umgesetzt wegen AIDA :-o.
Mal eine Frage wenn nun das nächste Java Update kommt Java 8 muss diese Prozedur erneut ausgeführt werden?
Kann man eventuell nur relevante dateien um kopieren so das es mit Java 8 auf anhieb funktioniert (ohne nervende Meldung)
Member: colinardo
colinardo May 20, 2014 updated at 16:16:26 (UTC)
Goto Top
Moin,
das kommt darauf an was sich in Java 8 ändert (konnte das noch nicht evaluieren), wenn du den Java-Keystore geändert hast um dort ein eigenes Zertifikat importiert hast musst du dies nachholen, wenn ein offizielles Zertifikat zur Signatur verwendet wurde, dann nicht. Ansonsten sollte es weiter funktionieren. Aber das kannst du ja schon mal selber austesten Über eine Rückmeldung würde ich mich dann freuen ...

Grüße Uwe
Member: Friso42
Friso42 May 22, 2014 at 11:22:10 (UTC)
Goto Top
Hallo,

ich habe das ganze jetzt schon zweimal abgearbeitet, jedes mal scheinbar ohne Fehler. Wenn ich mir dann aber den Regelsatz anzeigen lassen will bekomme ich immer die Meldung
"Regelset nicht gefunden"

Hat vielleicht jemand eine Idee??

Friso
Member: Red-Peace
Red-Peace Jun 03, 2014 at 12:17:46 (UTC)
Goto Top
Hallo,

komme nicht mehr weiter....
Ich habe das bei uns in der Firma vor ca. 8 Wochen umgesetzt unter Win7.
Läuft super.

Leider haben wir noch ein paar XP Rechner (SP3+alle Patches)
Migration auf Win7 läuft aber dauer noch etwas.

Jetzt wollte ich auf einem der XP Rechner das auch umsetzten.
Alles gemacht, aber im IE8 bekomme ich dann immer nur die Meldung:
Anwendung durch Sicherheitseinstellung blockiert.
Name: StarterApplet
Die Äusführung der Anwendung wurde durch das Deployment-Regelset blockiert.
Aktivieren sie das Java-Plug-in der nächsten Generation, oder entfernen sie das Deployment-Regelset,
um diese Anwendung ausführen zu können.

Mit Firefox getestet auf dem Rechner klappt es problemlos.
Wenn ich das Deployment Ruleset lösche dann geht es auch mit dem IE8 wieder.
Aber dann eben mit den diversen Warnmeldungen....

Das Deployment Ruleset, Zertifikat und Java (7u45) ist alles das gleiche wie auf den
Win7 Maschinen die funktionieren.

Tipp für mich?

Vielen Dank schon Mal im Voraus!

Grüße!

Gero
Member: colinardo
colinardo Jun 03, 2014 updated at 16:17:35 (UTC)
Goto Top
Moin Gero,
Zitat von @Red-Peace:
Das Deployment Ruleset, Zertifikat und Java (7u45) ist alles das gleiche wie auf den
Win7 Maschinen die funktionieren.
gerade mal auf XP mit aktuellstem Java 7 JRE und IE8 getestet geht hier einwandfrei ohne Fehler.

Wie sieht dein Ruleset aus ? Schon die IE Einstellungen auf Default zurückgesetzt, Zertifikat in den Java-Keystore importiert ? Wie sieht es mit dem StarterApplet aus wird hier ein Webstart-Projekt(*.jnlp) File geladen, arbeitest du im Ruleset mit Hashes oder nur via Pfadangabe ? Lädt das Webstartprojekt eventuell unterschiedliche Applets je nach Betriebssystem, dann müsste der Hash dieses Applets zusätzlich in das Ruleset. Ist eine Default-Rule im Ruleset vorhanden ?

So viele Variablen, ohne die kann ich leider nur raten ...

Grüße Uwe
Member: colinardo
colinardo Jun 03, 2014, updated at Jun 04, 2014 at 10:55:34 (UTC)
Goto Top
Zitat von @Friso42:
ich habe das ganze jetzt schon zweimal abgearbeitet, jedes mal scheinbar ohne Fehler. Wenn ich mir dann aber den Regelsatz
anzeigen lassen will bekomme ich immer die Meldung
"Regelset nicht gefunden"
Hallo Friso,
dann hast du den wichtigen Hinweis bei Punkt 4 überlesen.

Das kommt wenn du dich beim Erzeugen des JAR-Files im falschen Verzeichnis befindest, dazu habe ich oben unter Punkt 4 den roten Warnhinweis geschrieben. Ansonsten landet das Ruleset nämlich in einem Unterordner im JAR-File, und die ruleset.xml wird von Java nicht gefunden.

So darf es dann im Endeffekt nicht aussehen
back-to-topFALSCH: Die ruleset.xml befindet sich in einem Unterordner innerhalb des JAR-Files
9e2ab24c072de3d9895c685955fb5015


back-to-topRICHTIG: So soll es aussehen
9bdb5ebb16afe57558ea4e90ead7fdcc

Überprüfen könnt Ihr das z.B. mit dem JavaDecompiler

Grüße Uwe

p.s. Ich habe oben unter einem neuen Punkt 10 mal ein Batch-Script hinterlegt das die nötigen Schritte zur Vereinfachung zusammenfasst.
Member: Red-Peace
Red-Peace Jun 04, 2014 updated at 11:32:55 (UTC)
Goto Top
Hallo Uwe,

danke für deine Antwort.

Ruleset sieht gut aus ;)
Nein, im Ernst, hier mal das Ruleset:
Ich habe mal aus Datenschutzgründen die Adressen zensiert.

---------------------------------------
<ruleset version="1.0+">
  <rule>
    <id location="https://a*****.i.d******.com" />
    <action permission="run" />
  </rule>
  <rule>
    <id location="https://d*******-y****.a**.c******.net" />
    <action permission="run" />
  </rule>
  <rule>
    <id location="http://g*****.a****.c******.net" />
    <action permission="run" />
  </rule>
  <rule>
    <id location="http://53.***.**.*" />
    <action permission="run" />
  </rule>
  <rule>
    <id />
    <action permission="default" />
  </rule>
 </ruleset>
---------------------------------------------------
Ein .jnlp wird nicht geladen.
Applets werden die gleichen geladen. Egal ob XP oder Win7.

Also ich habe jetzt den IE komplett zurückgesetzt > keine Veränderung.
Dann habe ich Java komplett deinstalliert, neustart, wieder installiert.
Zertifikat neu importiert und jetzt geht's.
Also nachvollziehen kann ich es nicht....
Evtl. lag es daran, dass vorher noch eine alte Java 6 installiert war und ich ohne
neustart zwischendrin die 6er deinstalliert und 7er installiert habe....

Vielleicht hast du dazu auch noch eine Idee.
Seit ein paar Tagen kommt jetzt eine neue Warnung.
Und zwar:
Sicherheitswarnung
Die Verbindung zu dieser Website ist nicht vertrauenswürdig.
Website: https:\\xxxxxxxx.net:443
Hinweis: Das Zertifikat ist nicht gültig und kann nicht zur Prüfung der Identität dieser Website verwendet werden.

Die Meldung kann zwar mit "Weiter" bestätigt werden aber ist halt wieder eine Meldung zwischendrin.
Und die User sind da irgendwie empfindlich geworden.... :/

Sorry für den komischen Post.
Aber das Forum erkennt hier wohl was als html code. face-sad

Vielen Dank und Grüße!

Gero
Member: colinardo
colinardo Jun 04, 2014 updated at 11:46:11 (UTC)
Goto Top
Zitat von @Red-Peace:
Sicherheitswarnung
Die Verbindung zu dieser Website ist nicht vertrauenswürdig.
Website: https:\\xxxxxxxx.net:443
Hinweis: Das Zertifikat ist nicht gültig und kann nicht zur Prüfung der Identität dieser Website verwendet werden.
Datum des Zertifikates abgelaufen ?
mach mal einen Screenshot des Dialogs und des Zertifikates
Sorry für den komischen Post.
Aber das Forum erkennt hier wohl was als html code. face-sad
Benutze Code-Tags

Grüße Uwe
Member: Red-Peace
Red-Peace Jun 04, 2014 at 12:30:20 (UTC)
Goto Top
Hallo Uwe,

also Bilder hochladen ist hier aber auch relativ kompliziert....
Extra eine neue Frage erstellen, Bild hochladen, Code kopieren, und dann abbrechen.
Warum geht das nicht direkt in der Kommentarfunktion? Oder check ichs nicht?
Sorry für's OT....

Also hier mal der Screenshot:
bf23926574e8a6864fcc70c4581f4305

Das Zertifikat ist nicht abgelaufen. Gültig bis Mai 2015.

Grüße!

Gero
Member: colinardo
colinardo Jun 04, 2014 updated at 12:40:25 (UTC)
Goto Top
Zitat von @Red-Peace:
also Bilder hochladen ist hier aber auch relativ kompliziert....
Extra eine neue Frage erstellen, Bild hochladen, Code kopieren, und dann abbrechen.
Warum geht das nicht direkt in der Kommentarfunktion? Oder check ichs nicht?
Sorry für's OT....
Ja ich weiß steht schon lange auf der Wunschliste von uns allen ... face-wink
verwendet Ihr ein gekauftes Zertifikat oder selbstsigniert. Wurde das Zertifizierungsstellenzertifikat das das Zertifikat ausgestellt hat es in den Java-CA-Keystore importiert ? und in den ROOT-CA-Store von Windows ?
Es muss hier eindeutig an einem Zertifikat liegen, also entweder das der https-Site im Browser, oder ein Zertifikat in der JAR-Datei der Anwendung,.
Überprüfe also nochmals alle in Frage kommenden Zertifikate und Zwischenstellen auf Vertrauenswürdigkeit.
Member: Friso42
Friso42 Jun 12, 2014 at 18:16:08 (UTC)
Goto Top
OK jetzt bekomme ich die Ruleset angezeigt. Ich hatte das ganze immer mit dem vollen Pfadnamen gemacht.

Ich stelle mich aber immer noch ziemlich glatt an, jetzt bekomme ich den Hinweis "Selbstsignierte JAR-Datei des Deployment-Regelsets kann nicht verifiziert werden"

Es geht mir übrigens darum auf eine Oracle Forms Anwendung auf unserem WebLogic Server zu zugreifen.
Member: colinardo
colinardo Jun 12, 2014 updated at 19:05:05 (UTC)
Goto Top
Zitat von @Friso42:
Ich stelle mich aber immer noch ziemlich glatt an, jetzt bekomme ich den Hinweis "Selbstsignierte JAR-Datei des
Deployment-Regelsets kann nicht verifiziert werden"
Lese in den oben stehenden Kommentaren, da findest du die Lösung. Diese Meldung kommt immer dann, wenn du dein Zertifikat mit dem du das Regelset signiert hast, noch nicht richtig im Windows Store und Java-Keystore hinterlegt hast!!
Genau lesen ist hier oberste Prio !
Grüße Uwe
Member: Friso42
Friso42 Jun 12, 2014 at 19:39:33 (UTC)
Goto Top
Ja Ja wer Lesen kann ist voll bevorteilt. face-smile

brauch halt manchmal einen Schlag auf den Hinterkopf, besonders wenn ich sowas in der Spätschicht machen soll.


war übrigens das Store Passwort face-smile

danke erst mal für heute mach isch Schluss, Komme aber sicher noch mal

Friso
Member: domii666
domii666 Aug 18, 2014 updated at 07:19:39 (UTC)
Goto Top
bekomme leider auch den Fehler dass das DeploymentRuleSet nicht verifiziert werden kann.

I

Hier legt er mir irgendwie die JAR-Dateien bzw. jnlp auch nicht rein. Vllt fehlt ihm das dazu? Oder Zertifikatsfehler?

C:\Users\%username%\AppData\LocalLow\Sun\Java\Deployment\cache


Ebenfalls bei der Batchdatei ein Fehler.

C:\java>copy /y DeploymentRuleSet.Jar "C:\Windows\sun\java\Deployment"
Zugriff verweigert
0 Datei(en) kopiert.
Member: colinardo
colinardo Aug 18, 2014, updated at Nov 02, 2014 at 19:21:20 (UTC)
Goto Top
Hallo domii666,
lese bitte mal die obigen Kommentare, da steht mehrfach drin was du bei diesem Fehler falsch machst. Wenn du die Anleitung exakt befolgst, funktioniert das einwandfrei. Dein Fehler kommt zu 99,9% daher das die Anleitung nicht genau gelesen wurde.
C:\java>copy /y DeploymentRuleSet.Jar "C:\Windows\sun\java\Deployment"
Zugriff verweigert
Dazu muss ich nichts mehr sagen, hier fehlen dir Grundlegende Windows-Kenntnisse, sorry. Stichwort: ADMIN-Rechte für das kopieren in diesen Ordner !

p.s. Auch wenn du hier neu bist, bitte beherzige unsere Regel Nr.1. Merci.

Grüße @colinardo
Member: barilla
barilla Nov 04, 2014 at 09:27:22 (UTC)
Goto Top
Hallo colinardo, vielen Dank für diese Anleitung! Hat mir geholfen ein DRS mit unserem Sha256 Hash zu erstellen.
Ich habe nicht alle Schritte auf mich anwenden können/müssen, aber das Ergebnis funktioniert.

Frage: Dieser Weg hat aber doch den Nachteil, dass ggf. eine andere Anwendung bereits ein DRS verwendet und wir es nicht überschreiben dürfen? Durch die feste Pfad und Namensvorgabe seitens Oracle sind wir doch sehr eingeschränkt. Außerdem könnte eine andere Anwendung, nachträglich installiert, unser DRS überschreiben. Eine der beiden Anwendungen würde dann nie funktionieren.

Setzt sich mit dem Thema noch jemand auseinander? Wenn ja wie löst ihr dieses Problem? Feste Vorgaben beim Kunden?

OT: Sogar mit verifiziertem Zertifikat ist man von den neuen Sicherheitsrichtlinien betroffen. Will man beispielsweise eine Deployment-Anwendung im lokalen Netzwerk mit einer älteren privaten JRE starten... Bis zur SE 7u71 bzw. 8 funktionierte es noch durch die deployment.properties. Jetzt müssen wir wohl auf DRS, Angabe in der .jnlp und sonstige Tricks umsteigen.

lG barilla
Member: colinardo
colinardo Nov 04, 2014 updated at 14:07:34 (UTC)
Goto Top
Hallo @barilla, Willkommen auf Administrator.de!
[OT]Ich glaube heute esse ich zur Abwechslung mal Nudeln zu Mittag face-smile [/OT]
Zitat von @barilla:
Hallo colinardo, vielen Dank für diese Anleitung! Hat mir geholfen ein DRS mit unserem Sha256 Hash zu erstellen.
freut mich...
Frage: Dieser Weg hat aber doch den Nachteil, dass ggf. eine andere Anwendung bereits ein DRS verwendet und wir es nicht überschreiben dürfen? Durch die feste Pfad und Namensvorgabe seitens Oracle sind wir doch sehr eingeschränkt. Außerdem könnte eine andere Anwendung, nachträglich installiert, unser DRS überschreiben. Eine der beiden Anwendungen würde dann nie funktionieren.
Setzt sich mit dem Thema noch jemand auseinander? Wenn ja wie löst ihr dieses Problem? Feste Vorgaben beim Kunden?
Also so etwas würde ich vor dem Ausrollen einer Applikation prüfen, ist es der Fall, würde ich mir das RuleSet aus der fremden Deployment-Config extrahieren und mein eigenes DRS um diese Einträge ergänzen.

Grüße Uwe
Member: barilla
barilla Nov 06, 2014 at 19:39:44 (UTC)
Goto Top
Hallo Uwe,
vielen Dank, endlich habe ich mich mal angemeldet *g
[OT] Ich hoffe meine Verwandten haben dir geschmeckt *g [/OT]

Was du vorschlägst ist eigentlich das, was ich erhofft hatte. Das Problem habe ich dann aber in der Signierung gesehen. Das DRS, was ich finden würde, hätte ja auch eine eigene Signatur. Das ganze Automatisch in ein File zu packen könnte eine Herausforderung werden =D
Signieren ist für mich gerade ganz neu. Ich muss mich damit noch etwas beschäftigen.

Der Ansatz ist aber gut. Ich lass es mal wirken. Vielen Dank =)
lG carina
Member: inane84
inane84 Dec 22, 2014 at 11:24:51 (UTC)
Goto Top
Hallo,

Ich bekomme ebenfalls die Fehlermeldung im Browser:
"Regelset-JAR-Datei kann nicht verifiziert werden"

Ich denke alle Punkte funkt. entspr. korrekt bei mir bis auf 9.2 wo ich beim Zertifikate in den Keystore importieren nach Eingabe des Kennworts folgende Fehlermeldung im CMD bekomme:

Zertifikateantwort und Zertifikate in Keystore sind identisch.

Ist es eig. auch möglich als Zertifikatsspeicherort (wenn man dieses Doppelklickt und importiert) das Active Directory anzugeben um es entspr. zuzuweisen?

Danke im Vorraus & mfG,
inane
Member: Friso42
Friso42 Jan 05, 2015 at 14:31:03 (UTC)
Goto Top
Hallo,

gibt es noch mehr Möglichkeiten in der Rulset.xml

für eine alte Anwendung welche au einem Oracle Applikationsserver läuft muss ich in die Runtime-Pararmeter folgenden Eintrag machen.

-djava.vendor="sun microsystems inc"

siehe auch:
https://www.all4os.com/windows/easy-fix-for-java-error-oracle-jinitiator ...

leider werden damit alle Java Anwendungen langsamer. Besteht die Möglichkeit das in die Rulset einzubinden genau für diese Anwendung??

??????
<action permission="run" -djava.vendor="sun microsystems inc" />
??????

danke erst mal

Friso
Member: colinardo
colinardo Jan 05, 2015 updated at 14:48:43 (UTC)
Goto Top
Besteht die Möglichkeit das in die Rulset einzubinden genau für diese Anwendung??
Nein.
Das ist ein Runtime-Parameter der für das ganze Java auf dem Rechner gilt.
http://serverfault.com/questions/270924/setting-java-runtime-setting-fo ...

Grüße Uwe
Member: SBKSBK
SBKSBK Mar 23, 2015 updated at 17:28:17 (UTC)
Goto Top
Danke für das gute Java-Tutorial.

Eine Information fehlt mir noch, gibt es eine Möglichkeit das Zertifikat für die Dauer von mehr als 2 Jahren auszustellen? Habe diesbezüglich keine Informationen im Tutorial gefunden.

Gruss SBK
Member: colinardo
colinardo Mar 23, 2015 updated at 18:06:23 (UTC)
Goto Top
Guten Abend SBK,
Eine Information fehlt mir noch, gibt es eine Möglichkeit das Zertifikat für die Dauer von mehr als 2 Jahren auszustellen?
ist eigentlich im Befehl für die Erzeugung des Zertifikats ersichtlich, wenn du das Zertifikat erstellst gibst du ja die Dauer der Gültigkeit in Tagen ja als Parameter an:

keytool.exe -genkey -keyalg RSA -alias myalias -keystore keystore.jks -storepass GEHEIM -validity 720 -keysize 2048

Ändere einfach den Parameter -validity auf den gewünschten Wert in Tagen.

Grüße Uwe