2014-01-27 13 views
7

Ich habe ein Java-Applet, das ich auf meiner Website bereitstellen muss.Wie schreibe ich eine Manifest-Datei für die neuen Java-Sicherheitsbarrieren

Meine Website hat viele Seiten und das Applet erscheint auf einer Reihe von ihnen. Die Basis-Domain meiner Website ist www.mycompany.com. Aber das Applet erscheint auf, zum Beispiel: www.mycompany.com/dog, www.mycompany.com/cat, www.mycompany.com/pen usw.

Das Paket des Einstiegspunktes ist com.mycompany.MyApplet.

Folgen Sie den Anweisungen unter Java Security Manifest Changes in the Browser, ich habe das folgende Manifest für meine App erstellt. Will jemand bitte es für mich überprüfen, damit ich es richtig mache? Im Grunde möchte ich keine Art von Warnung, wenn Leute versuchen, mein Applet von meiner Website zu starten.

MANIFESTEN

Manifest-Version: 1.0 
Created-By: 1.7.0_51 
Permissions: sandbox 
Application-Name: My Farming Business 
Application-Library-Allowable-Codebase: www.mycompany.com/where_the_applet_jar_actually_lives 
Caller-Allowable-Codebase:www.mycompany.com 
Codebase: www.mycompany.com 

Derzeit erhalte ich die folgende Dialog nach dem obigen Manifest Umschichtung:

Anwendung Blockiert von Sicherheitseinstellungen: Ihre Sicherheitseinstellungen haben von einer nicht vertrauenswürdigen Anwendung blockiert läuft

Ref: How do I inject new manifest into an existing jar for applet

Auch habe ich die folgenden Schritte verwendet mein Glas zu unterschreiben:

  1. keytool -genkey -keystore myKeyStore -alias me
  2. keytool -selfcert -keystore myKeyStore -alias me
  3. jarsigner -keystore myKeyStore jarfile.jar me
+0

In meinem Manifest habe ich sogar "Implementierung-Vendor: Company Name", aber ich habe nicht "Trusted-Only" -Eintrag. Welche Warnungen werden in der Java Console angezeigt? –

+1

Wie lautet Ihre Java-Sicherheitsstufe in Ihren Einstellungen? – Behe

+1

Das ist eine wirklich gut gestellte Frage. Sehr selten. Sehr schön. –

Antwort

4

Was den Fehler, den Sie ich kann mir drei mögliche Probleme:

1) Ihr Applet fragt nicht die Erlaubnis für das, was er zu tun versucht.

Was passiert? Die "Berechtigungen" sagen dem Benutzer, wie viel "Power" die Anwendung über den Computer des Benutzers hat. "sandbox" lässt die Anwendung nicht viel tun und "all-permissions" verschaffen dem Applet ein wenig mehr Kontrolle. Natürlich sollten Sie die niedrigste Berechtigung verwenden, die Sie verwenden können (z. B. Sandbox), da die untere Warnung, die der Benutzer erhält, umso geringer ist, je niedriger die zulässige Berechtigung ist. Wenn Ihr Applet beispielsweise versucht, auf die persönlichen Dateien des Benutzers zuzugreifen, aber das Attribut "Berechtigungen" auf "Sandbox" gesetzt ist, funktioniert das Applet nicht, da es nicht um Erlaubnis gefragt hat, was es zu tun versucht .

Wie löst man es?Einfach, einfach ändern Permissions: sandbox zu Permissions: all-permissions

2) Ihr Computer lässt keine selbstsignierten Anwendungen laufen.

Was passiert? Die meisten Browser haben sehr strenge Regeln für Applets. vor allem, wenn Sie alle Berechtigungen benötigen (was Sie nicht sind).

Wie löst man es? Ändern Sie Ihre Java-Sicherheit in Java-Systemsteuerung in etwas niedriger. Sie können entweder nach "Java Control Panel" in Ihrem Computer oder gehen Sie selbst zu diesem Pfad (Windows 8 kann nicht finden Sie die Java-Systemsteuerung aus irgendeinem Grund, so dass Sie selbst suchen müssen) C:\program files\java\jre7\bin\javacpl.exe in der JCP gehen auf Sicherheit Registerkarte und ändere es auf mittel.

3) Ihr Betriebssystem erlaubt Ihnen nicht, Applets auszuführen, die Sie selbst signiert haben. (Achten Sie auf "Applets, die Sie selbst unterschrieben haben", nicht "selbstsignierte Applets", das ist alles, was kein offizielles Zertifikat hat. Betriebssysteme behandeln sie normalerweise anders.)

Wie löst man es? Laden Sie das Applet auf einen Webhost-Dienst hoch und geben Sie es von einem anderen Computer ein. Alle Computer, außer denen, mit denen Sie das Applet signiert haben, sollten in der Lage sein, das Applet zu öffnen.


Was Sie erwähnt haben über Benutzer keine Sicherheitsaufforderungen erhalten, ist es eine fast unmögliche Nachfrage. Mit der Vielzahl von Betriebssystemen, Browsern und Anti-Viren können Sie nie wissen. Allerdings gibt es ein paar Methoden, in denen Sie die Menge reduzieren Sicherheit fordert:

  • Selbst signierte Applets (Selbst Unterzeichnung ist, was Sie mit der Eingabeaufforderung tat) sind sehr wahrscheinlich immer Sicherheitsabfragen zu zeigen. Sie können ein offizielles SSL kaufen und es wird die Anzahl der Eingabeaufforderungen erheblich reduzieren.
  • Wenn Sie "alle Berechtigungen" benötigen, erhalten Sie viel mehr Eingabeaufforderungen als wenn Sie "Sandbox" -Berechtigungen benötigen.

empfehle ich Ihnen unter den folgenden Links zu sehen:

SSL: Where could I buy a valid SSL certificate?

Berechtigungen: http://docs.oracle.com/javase/tutorial/deployment/applet/security.html


Wenn Sie Problem Nummer 1 haben, das wäre der Manifest-Datei:

Manifest-Version: 1.0 
    Created-By: 1.7.0_51 
    Permissions: all-permissions 
    Application-Name: My Farming Business 
    Application-Library-Allowable-Codebase: www.mycompany.com/where_the_applet_jar_actually_lives 
    Caller-Allowable-Codebase:www.mycompany.com 
    Codebase: * 

Entweder (Wenn das Problem 2 oder 3 ist), müssen Sie die Manifestdatei nicht einmal ändern.

Wie @tigran erwähnt, wenn Sie Ihr Applet von mehreren verschiedenen Orten ausführen möchten, würden Sie wahrscheinlich "Codebasis" zu * ändern.

+0

Vielen Dank für die gründliche Antwort. Falls jemand anderes hier stolpert: Ich behalte die Berechtigungen "Sandbox" und befolge deine Anweisungen, um die Warnungen auf "Publisher UNKNOWN" zu reduzieren, was im Grunde bedeutet, dass ich eine dritte Partei für mein Zertifikat bezahlen muss, anstatt selbstsignieren zu müssen. – learner

1

Sie benötigen die Erlaubnis Abschnitt ändern, um es an die Arbeit:

Manifest-Version: 1.0 
    Created-By: 1.7.0_51 
    Permissions: all-permissions 
    Application-Name: My Farming Business 
    Application-Library-Allowable-Codebase: www.mycompany.com/where_the_applet_jar_actually_lives 
    Caller-Allowable-Codebase:www.mycompany.com 
    Codebase: * 

Berechtigungen: Alle Berechtigungen ist der Schlüssel Teil.

+0

Ich habe das Kopfgeld der anderen Antwort gegeben, weil es gründlicher ist. Aber danke für die '*' Referenz. +1 – learner

0

Ich unterzeichnete hier ein Java-Applet und es hat gut funktioniert. Es läuft im Browser.

keytool -genkey 

    keytool -selfcert 

//here the trick...it actually created another jar ! 

    jarsigner -signedjar tecladoVirtualSigned.jar tecladoVirtual.jar mykey 

Dieses neue Applet läuft:

Die Schritte, um den Schlüssel und Vorzeichen das Applet waren (es ist etwas anders als Ihre Schritte) zu erzeugen. Die alte App (nicht signiert) zeigt dieses Berechtigungsproblem.

+0

Aber @learner sagte, dass er das Applet bereits unterschrieben hat ... – Atlantis

+0

Aber die angezeigte Warnung ist so, als wäre das Glas noch nicht signiert. Das ist der Grund, warum ich die Schritte wieder unternommen habe. Auf eine etwas andere Art und Weise. Erstellen Sie ein weiteres Jar mit dem Befehl jarsigner – edubriguenti