So stellen Sie sicher, dass Ihr Java-Code in Internet Explorer vertrauenswürdig ist


Hinweis Die Microsoft Java Virtual Machine (MSJVM) und das Microsoft SDK für Java stehen nicht mehr für die Verteilung von Microsoft zur Verfügung. Es werden keine Verbesserungen an der MSJVM oder dem SDK für Java vorgenommen. Weitere Informationen zu Ressourcen für Java-Entwickler finden Sie auf der folgenden Microsoft-Website:

ZUSAMMENFASSUNG


Berücksichtigen Sie verschiedene Faktoren, wenn Sie Ihren Java-Code in Microsoft Internet Explorer als voll vertrauenswürdig, teilweise vertrauenswürdig oder nicht vertrauenswürdig ausführen möchten. In diesem Artikel werden viele der Überlegungen erläutert, und es verweist auf einige Ressourcen, die sicherstellen können, dass Ihr Java-Code die richtige Vertrauensebene hat, wenn er im Browser ausgeführt wird.

WEITERE INFORMATIONEN


Klassenladeprogramm

Es ist wichtig, die Bedeutung des Class Loader in Java zu verstehen. Der Klassenlader steuert einen Großteil der Sicherheit und des Zugriffs, der einer Klasse gewährt wird. Der folgende Artikel in der Microsoft Knowledge Base erläutert, wann die Microsoft Virtual Machine (Microsoft VM) unterschiedliche Lade Programmer verwendet:
177168 Wie sucht die virtuelle Maschine nach Java-Klassen?
Mit diesen Informationen können Sie eine fundiertere Entscheidung darüber treffen, welche Methode zum Erlangen zusätzlicher Berechtigungen für Ihr Projekt am besten geeignet ist.

Was es bedeutet, vertrauenswürdig zu sein

Der Begriff Trusted bedeutet, dass der Code nicht mehr auf die Java-Sandbox beschränkt ist. Der Sandkasten schränkt nicht vertrauenswürdigen Code ein, um die vertrauenswürdigen Vorgänge erfolgreich auszuführen, beispielsweise:
  • Aufrufen von systemeigenem Code
  • Verwenden von com
  • Verwenden von J/Direct
  • Herstellen einer Verbindung mit Remotecomputern
  • Drucken
  • Verwenden von JDBC
  • Erstellen von Fenstern auf oberster Ebene ohne appletwarning
Damit Ihre Klassen mit Berechtigungen über der Sandbox-Ebene ausgeführt werden können, müssen die Klassen an den Clientcomputer innerhalb einer signierten CAB-Datei übermittelt werden. Wenn Sie die CAB-Datei signieren, müssen Sie auch die Berechtigungen angeben, die für die enthaltenen Klassen erforderlich sind. Es gibt drei vordefinierte Berechtigungsstufen (Low, Medium und hoch) in Microsoft Internet Explorer 4.x:
  • Große Berechtigungen entsprechen der Java-Sandbox. Theonly Vorteil der Signierung in diesem Szenario ist, dass Sie einen Benutzer von Ihrem Code sicherstellen können, dass der Code von einem Drittanbieter nicht geändert wurde.
  • Die Berechtigungen für Medium sind identisch mit "groß", doch lassen Sie foraccess in einem Scratch-Bereich auf dem lokalen Computer zu.
  • Bei geringen Berechtigungen wird im Wesentlichen der Zugriff auf alle zuvor aufgeführten theoperations gewährt.

Asserting-Berechtigung

Der folgende Knowledge Base-Artikel enthält genügend Informationen, um zu verstehen, wann, warum und wie Sie die Berechtigung in Ihrem Java-Code geltend machen sollten:
175622 SecurityExceptionEx-Ausnahme, die ein Java-Applet ausführt

Erstellen der CAB-Datei

Nachdem Sie nun das Konzept der Ladeprogramme, der Vertrauenswürdigkeit und der Berechtigungen verstanden haben, besteht der nächste Schritt darin, zu wissen, wie die CAB-Datei erstellt wird. In diesem Schritt müssen Sie entscheiden, ob Sie Ihren Code auf dem Computer des Benutzers installieren möchten, oder Sie können Ihren Code einfach in eine CAB-Datei packen, um bei jedem Besuch Ihrer Seite einen schnelleren Download zu erhalten. Wenn Sie Ihren Code nicht auf dem lokalen Computer installieren möchten, können Sie einfach eine CAB-Datei mit dem Dienstprogramm CABARC. exe erstellen und auf die CAB-Datei von einem Parameter verweisen, der aus HTML an Ihr Applet übergeben wird. Dies wird in Beispiel 1 weiter unten in diesem Artikel gezeigt. Hinweis Für diese Methode ist es nicht erforderlich, dass Sie die CAB-Datei signieren, wenn Sie den Code nicht als vertrauenswürdig ausführen müssen. Sie können weiterhin die Vorteile eines einzelnen komprimierten Dateidownloads anstelle einzelner Klassendateien nutzen. Wenn Sie Ihren Code auf dem lokalen Computer installieren möchten, gibt es zwei Ansätze. Eine Möglichkeit besteht darin, eine Distributions Einheit (du) mithilfe des Dienstprogramms "Dubuild. exe" im SDK für Java zu erstellen. Dieses Dienstprogramm erstellt eine CAB-Datei und enthält eine automatisch generierte OSD-Datei. Weitere Informationen finden Sie unter Beispiel 2 weiter unten in diesem Artikel. Die andere Methode, um Code auf dem lokalen Computer zu installieren, besteht darin, eine INF-Datei zu verwenden. Diese Methode ist etwas manueller und fehleranfälliger, hat aber den eindeutigen Vorteil, dass Sie die einzige Methode ist, die in Internet Explorer 3 funktioniert.x und höher. Weitere Informationen finden Sie unter Beispiel 3 weiter unten in diesem Artikel. Jede dieser Methoden hat den Vorteil, dass Sie Ihren Code beim ersten Besuch auf der Seite herunterladen und bei nachfolgenden Besuchen keinen weiteren Download erfordern, es sei denn, es wird eine neuere Version zur Verfügung gestellt. Sie erfordern jedoch einen dauerhaften Speicherplatz auf dem lokalen Laufwerk des Benutzers.

Verwenden einer digitalen Signatur für ihre CAB-Datei

Sie müssen ihre CAB-Datei signieren, wenn Ihr Code etwas außerhalb der Java-Sandbox durchführen muss oder wenn Sie Code auf dem lokalen Computer von einer Webseite installieren möchten. Sie signieren ein CAB mit dem Dienstprogramm "Signcode. exe" im SDK für Java. Die Beispiele weiter unten in diesem Artikel zeigen einige häufige Signatur Szenarien. Weitere Informationen finden Sie im Thema "Signieren von CAB-Dateien mit Java-Berechtigungen" im SDK für Java-Dokumentation und-Beispiele an folgendem Speicherort: Klicken Sie im SDK auf Index , und klicken Sie dann auf S. Scroll So finden Sie "Signieren von CAB-Dateien mit Java-Berechtigungen" Im folgenden finden Sie einige wichtige Punkte, die Sie beachten sollten:
  • Feinkörnige Java-Berechtigungen wurden in den MicrosoftVM-und Signier Tools im SDK für Java 2,0 und höher hinzugefügt.
  • Durch die Verwendung von abgestimmten Berechtigungen können Sie die Anfälligkeit für einen Entwickler eines Java-Pakets einschränken, indem Sie den Zugriff auf das bareminimum reduzieren, das für Ihr Projekt erforderlich ist.
  • Abgestimmte Berechtigungen werden zum Zeitpunkt der Signierung mit einem. Weitere Informationen finden Sie im SDK für Java-Dokumentation mit dem Titel "JavaPermissions. ini Values Reference".
Schließlich können Sie ein Testzertifikat für Entwicklungszwecke verwenden (wie in den Beispielen weiter unten in diesem Artikel zu sehen ist), es wird jedoch ein echtes Zertifikat gewünscht, bevor die Anwendung bereitgestellt wird. Ein echtes Zertifikat kann von einer Zertifizierungsstelle bezogen werden. VeriSign stellt nun Zertifikate zur vollständigen Sicherheit für die Verwendung mit Authenticode aus. Sie können VeriSign an folgendem Standort kontaktieren: Weitere Informationen zum Erstellen, anzeigen und Verwalten von Zertifikaten finden Sie auf der folgenden MSDN-Website (Microsoft Developer Network):

Tags, um auf Ihre signierte CAB-Datei zu verweisen

Es gibt mehrere Möglichkeiten, auf Ihre signierte CAB-Datei in HTML zu verweisen. Es folgt eine Liste und ein kurzer Vergleich der verschiedenen Methoden:
  • cabbase-Parameter zu einem Applet-Tag
  • Cabinets-Parameter für ein Applet-Tag.
  • useslibrary, useslibrarycodebase und useslibraryversionparameters zu einem Applet-Tag
  • cabbase-Parameter für ein Object-Tag
  • Ablagen Parameter für ein Object-Tag
  • useslibrary, useslibrarycodebase und useslibraryversionparameters zu einer Objektkategorie

Vertrauenswürdiger Code in Internet Explorer für Macintosh

Authenticode wird in Internet Explorer für Macintosh nicht unterstützt. Um den heruntergeladenen Codezugriff außerhalb der Java-Sandbox zu aktivieren, muss der Benutzer den Server der Liste der vertrauenswürdigen Websites hinzufügen und dann die Websiteberechtigungen auf diejenigen festlegen, die für den Code erforderlich sind.

Beispiele

Mit den folgenden drei kurzen Beispielen können Sie die folgende Java-Klasse verwenden. Kopieren Sie diesen Text in eine Datei mit dem Namen "Simple. Java". Hinweis Stellen Sie sicher, dass Sie über eine Version von JVC. exe im Pfad aus dem SDK für Java 2,0 (Build 4337) oder höher verfügen. Diese Klasse wird einfache Assert-Berechtigung und beim Ausführen eine Win32-MessageBox anzeigen:
package simple;import com.ms.security.*;public class Simple extends java.applet.Applet{  public void init()  {    try {      if (Class.forName("com.ms.security.PolicyEngine") != null)        PolicyEngine.assertPermission(PermissionID.SYSTEM);    } catch (Throwable cnfe) {  }    try {          MessageBox(0, "MessageBox successfully called.", "Java", 0);      } catch (UnsatisfiedLinkError ule) {          System.err.println("Caught exception: " + ule);          System.err.println("Probably wrong version of Java                             compiler.");      }  }  /** @dll.import("USER32") */   static native int MessageBox(int    hwndOwner,                               String text,                               String title,                               int    style);}
Hinweis Der Zeilenvorschub wird unten in die Befehlszeilen für Signcode. exe eingefügt. Diese Befehlszeilen sind zu lang, um in eine Zeile in der Microsoft Knowledge Base zu passen, sollten aber in ihren Batchdateien als eine einzige Zeile bearbeitet werden.

Beispiel 1: Simple1

Dieses Beispiel zeigt eine signierte CAB-Datei, die nicht auf dem lokalen Computer installiert wird. Sie können die folgenden Befehle verwenden, um Simple. Java zu kompilieren, eine CAB-Datei zu erstellen, die Simple. Class enthält, den Test Stamm auf dem lokalen Computer zu aktivieren, ein Testzertifikat zu erstellen, die CAB-Datei mit geringen Java-Berechtigungen mit dem Testzertifikat zu signieren und die Seite Simple1. html im Browser zu starten. Kopieren Sie diese Befehle in eine Batchdatei mit dem Namen "go1. bat", und speichern Sie Sie im gleichen Verzeichnis wie die oben erstellte einfache Java-Datei:
jvc /d . Simple.javacabarc -p n mycab1.cab simple/Simple.classdel simple\Simple.classsetreg 1 truemakecert -sk MyKeyName -n "CN=My Publisher Name" MyTestCert.cercert2spc MyTestCert.cer MyTestCert.spcsigncode -j javasign.dll -jp LOW -spc MyTestCert.spc -k MyKeyName  mycab1.cabstart Simple1.html
Bevor Sie go1. bat ausführen, schneiden Sie den folgenden HTML-Code in eine Datei mit dem Namen Simple1. html aus, und fügen Sie ihn in das gleiche Verzeichnis wie die Dateien Simple. Java und go1. bat ein, die zuvor erstellt wurden:
<HTML> <APPLET CODE="simple.Simple" WIDTH=100 HEIGHT=100> <PARAM NAME="cabbase" VALUE="mycab1.cab"> </APPLET></HTML>
Hinweis Ein "Cabinets"-Parameter funktioniert austauschbar mit einem "cabbase"-Parameter auf Computern, auf denen Internet Explorer 4,0 und höher ausgeführt wird. Der Parameter "Cabinets" verfügt über die zusätzlichen Funktionen, mit denen mehrere CAB-Dateien aus dem gleichen Applet-Tag referenziert werden können.

Beispiel 2: Simple2

Dieses Beispiel zeigt eine signierte CAB-Datei, die im Java Package Manager (JPM) auf dem lokalen Computer installiert wird. Sie können die folgenden Befehle verwenden, um Simple. Java zu kompilieren, eine CAB-Datei zu erstellen, die Simple. Class und eine dubuild-generierte OSD-Datei enthält, den Test Stamm auf dem lokalen Computer zu aktivieren, ein Testzertifikat zu erstellen, die CAB-Datei mit geringen Java-Berechtigungen mit dem Testzertifikat zu signieren und die Seite "Simple2. html" im Browser zu starten. Kopieren Sie diese Befehle in eine Batchdatei mit dem Namen "Go2. bat", und speichern Sie Sie im gleichen Verzeichnis wie die zuvor erstellte einfache Java-Datei:
jvc /d . Simple.javadubuild mycab2.cab . /D "JPM Simple2" /I *.class /V 1,1,23,0del simple\Simple.classsetreg 1 truemakecert -sk MyKeyName -n "CN=My Publisher Name" MyTestCert.cercert2spc MyTestCert.cer MyTestCert.spcsigncode -j javasign.dll -jp LOW -spc MyTestCert.spc -k MyKeyName  mycab2.cabstart Simple2.html
Bevor Sie GO2. bat ausführen, schneiden Sie den folgenden HTML-Code in eine Datei mit dem Namen Simple2. html aus, und fügen Sie ihn in das gleiche Verzeichnis wie die Dateien Simple. Java und GO2. bat ein, die zuvor erstellt wurden:
<HTML> <APPLET code="simple.Simple" WIDTH=100 HEIGHT=100> <PARAM NAME=useslibrary VALUE="JPM Simple2"> <PARAM NAME=useslibrarycodebase VALUE="mycab2.cab"> <PARAM NAME=useslibraryversion VALUE="1,1,23,0"> </APPLET></HTML>
Sobald ein Paket auf dem lokalen Computer mit JPM installiert ist, ist es im Ordner "<windir> \Downloaded-Programmdateien" enthalten. Verwenden Sie diesen Ordner, um Pakete anzuzeigen und zu entfernen, die mit Internet Explorer installiert werden.

Beispiel für 3-Simple3

Dieses Beispiel zeigt eine signierte CAB-Datei, die die Simple. Class-Datei im <windir> \java\lib\simple-Verzeichnis auf dem lokalen Computer installiert. Sie können die folgenden Befehle verwenden, um Simple. Java zu kompilieren, eine CAB-Datei zu erstellen, die eine einfache Klasse und eine INF-Datei enthält, die Sie erstellen, den Test Stamm auf dem lokalen Computer aktivieren, ein Testzertifikat erstellen, die CAB-Datei mit geringen Java-Berechtigungen mit dem Testzertifikat Signieren und die Seite "Simple3. html" im Browser starten. Kopieren Sie diese Befehle in eine Batchdatei mit dem Namen "Go3. bat", und speichern Sie Sie im gleichen Verzeichnis wie die zuvor erstellte einfache Java-Datei:
jvc /d . Simple.javacabarc -p n mycab3.inner.cab simple/Simple.classdel simple\Simple.classcabarc n mycab3.cab mycab3.inner.cab simple.infsetreg 1 truemakecert -sk MyKeyName -n "CN=My Publisher Name" MyTestCert.cercert2spc MyTestCert.cer MyTestCert.spcsigncode -j javasign.dll -jp LOWX -spc MyTestCert.spc -k MyKeyName  mycab3.cabstart Simple3.html
Bevor Sie Go3. bat ausführen, müssen Sie den folgenden HTML-Code Ausschneiden und in eine Datei mit dem Namen Simple3. HTML einfügen und im gleichen Verzeichnis wie die Dateien "Simple. Java" und "Go3. bat" speichern, die zuvor erstellt wurden:
<HTML> <OBJECT    CLASSID="clsid:99999999-9999-9999-9999-999999999999" CODEBASE="mycab3.cab#Version=1,1,23,0"> </OBJECT> <APPLET CODE="simple.Simple" WIDTH=100 HEIGHT=100> </APPLET></HTML>
Hinweis Ersetzen Sie die GUID oberhalb von "99999999-9999-9999-9999-999999999999" durch die für die INF-Datei erstellte GUID in den folgenden Anweisungen. Führen Sie die folgenden Schritte aus, um die einfache INF-Datei zu erstellen, die in die äußere CAB-Datei aufgenommen werden soll:
  1. Kopieren Sie die Datei "Master. inf" aus dem <SDK-dir> \bin\packsigndirectory.
  2. Benennen Sie die neue Kopie von Master. inf in Simple. inf um.
  3. Öffnen Sie die einfache INF-Datei in einem Text-Editor.
  4. Ändern Sie die folgenden Zeilen von:
    run=extrac32.exe /e /a /y /l %49000% CabFileName.cab
    An:
    run=extrac32.exe /e /a /y /l %49000% mycab3.inner.cab
    Von:
    InfFile=master.inf
    An:
    InfFile=simple.inf
    Von:
    ClassId="{99999999-9999-9999-9999-999999999999}"
    An:
    1. Führen Sie guidgen. exe aus (aus dem <SDK-dir> Verzeichnis \bin).
    2. Wählen Sie Option #4 "Registrierungs Format" aus.
    3. Drücken Sie die Schaltfläche "neue GUID".
    4. Drücken Sie die Schaltfläche "Kopieren".
    5. Fügen Sie die neue GUID aus der Zwischenablage in die obige Zeile in der einfachen INF-Datei und auch in den obigen HTML-Code ein.
    Von:
    PackageName="name"
    An:
    PackageName="SIMPLE3"
    Von:
    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"aa,bb,cc,dd"
    An:
    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"1,1,23,0"
    Von:
    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\<filename>"
    An:
    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\simple\Simple.class"
  5. Speichern Sie die Änderungen, die Sie an der einfachen INF vorgenommen haben.
  6. Führen Sie die zuvor erstellte Go3. bat-Datei aus.
Hinweis 1 Nachdem Sie die vorherigen Beispiele ausgeführt haben, sollten Sie den Test Stamm auf dem lokalen Computer deaktivieren, indem Sie "Setreg. exe 1 falsch" ausführen. Dadurch wird verhindert, dass der Test Stamm als echtes Zertifikat von Internet Explorer berücksichtigt wird. Der Test Stamm kann immer mit "Setreg. exe 1 true" wieder aktiviert werden. Hinweis 2 Beachten Sie beim Signieren der CAB-Datei für die Verwendung von Untersuchungen in der Produktion die folgenden Punkte:
  1. Alle vorherigen Befehle generieren das Zertifikat andimmediately-Zeichen mit ihm. Die meisten Personen erstellen Ihre Zertifikate jedes von Ihnen erstellte und signierte CAB neu, doch dies ist bei der Veröffentlichung der CAB-Version nicht der Fall. Sie kaufen und verwenden ein Zertifikat, und Sie behalten es sorgfältig im Auge. Mit den vorherigen Befehlen wird ein Testzertifikat erstellt, Sie müssen jedoch nur thisif ausführen, die Sie noch nicht gekauft haben. Auf diese Weise würden Sie signieren, wenn Sie über eine PVK-Version verfügen, anstatt den Schlüssel in der Registrierung zu speichern, da einige Personen theirkeys in diesem Formular empfangen. Ersetzen Sie "-v mycertname. pvk" für "-k keyName".
  2. Wenn Sie den Befehl "Signcode. exe" ausführen, sollten Sie die Option "-t http://Timestamp.VeriSign.com/scripts/timstamp.dll" probablyadd, um die Signatur in der CAB-Datei ordnungsgemäß zu stempeln. Es wurde von thesesamples ausgelassen, damit der Befehl für Benutzer erfolgreich ist, die nicht über eine persistentconnection mit dem Internet verfügen.
Hinweis 3 Microsoft Visual J++ 6,0 bietet eine einfache Verpackung von Java-Komponenten. Weitere Informationen finden Sie auf der Registerkarte Ausgabe im Dialogfeld Projekteigenschaften und in der Produktdokumentation. Mit Visual J++ 6,0 erstellte Verteilungseinheiten verwenden die JPM-Paketinstallation.Hinweis 4 Sie können Internet Explorer 4 konfigurieren.x oder höher, um nicht signierten Code standardmäßig mit mehr als den Sandkasten Berechtigungen zu behandeln. Sie sollten dies nur für spezielle Situationen wie das Intranet oder zu Testzwecken tun. Wenn Sie Internet Explorer auf diese Weise konfigurieren, sollten Sie darauf hingewiesen werden, dass Sie keinen Schutz vor bösartigem Java-Code mehr haben, der auf Ihrem Computer ausgeführt wird. Führen Sie beispielsweise die folgenden Schritte aus, um alle Java-Applets automatisch als voll vertrauenswürdig in der Intranetzone zu behandeln:
  1. Wechseln Sie zur Registerkarte Sicherheit im Dialogfeld Internet Eigenschaften.
  2. Wählen Sie die Zone Lokales Intranet aus.
  3. Wählen Sie die Option Benutzerdefiniert aus, und klicken Sie auf Einstellungen.
  4. Suchen Sie das Java Permissions-Element in der Liste, und chooseCustom.
  5. Wählen Sie Benutzerdefiniert aus, und klicken Sie dann auf benutzerdefinierte Java-Einstellungen.
  6. Wechseln Sie zur Registerkarte Berechtigungen bearbeiten.
  7. Klicken Sie unter nicht signierten Inhalt ausführen auf aktivieren.

Informationsquellen


Wenn Sie weitere Informationen zu Sicherheits-und verpackungsproblemen auf dem Microsoft Virtual Machine finden möchten, klicken Sie auf die folgenden Artikelnummern, um die Artikel in der Microsoft Knowledge Base anzuzeigen:
175622 SecurityExceptionEx-Ausnahme, die ein Java-Applet ausführt
177168 Wie sucht die Java Virtual Machine nach Java-Klassen?
179652 Bereitstellen von Java in Internet Explorer 4,0 und Netscape 4,0
181374 Artikel zum Herunterladen verwandter Komponenten
Weitere Informationen zu Problemen mit dem Codedownload finden Sie auf der folgenden MSDN-Website: Die neuesten Knowledge Base-Artikel und weitere Supportinformationen zu Visual J++ und dem SDK für Java finden Sie auf den folgenden Seiten auf der Microsoft Technical Support-Website: