Jak utworzyć swój kod języka Java jako zaufany w programie Internet Explorer


Uwaga Maszyna wirtualna Microsoft Java (MSJVM) i pakiet Microsoft SDK dla języka Java nie są już dostępne do rozprowadzania przez firmę Microsoft. Nie będzie żadnych ulepszeń dotyczących oprogramowania MSJVM ani zestawu SDK dla języka Java. Aby uzyskać dodatkowe informacje na temat zasobów dla programistów Java, odwiedź następującą witrynę firmy Microsoft w sieci Web:

PODSUMOWANIE


Jeśli chcesz, aby kod Java był uruchomiony jako w pełni zaufany, częściowo zaufany lub niezaufany w programie Microsoft Internet Explorer, weź pod sobie kilka czynników. W tym artykule wyjaśniono wiele kwestii i wskazuje on niektóre zasoby, które mogą pomóc w upewnieniu się, że Twój kod Java ma odpowiedni poziom zaufania, gdy jest on wykonywany w przeglądarce.

WIĘCEJ INFORMACJI


Moduł ładujący zajęć

Ważne jest zrozumienie znaczenia modułu ładującego klasy w języku Java. Moduł ładujący klasy kontroluje większość zabezpieczeń i udziela dostępu do klasy. W poniższym artykule z bazy wiedzy Microsoft Knowledge Base opisano, kiedy maszyna wirtualna Microsoft (Microsoft VM) korzysta z różnych obciążeń:
177168 W jaki sposób maszyna wirtualna wyszukuje klasy Java?
Dzięki tym informacjom możesz podjąć bardziej świadomą decyzję o tym, jaką metodę uzyskania dodatkowych uprawnień przydaje się do swojego projektu.

Co oznacza zaufanie

Termin "zaufany" oznacza, że kod nie jest już ograniczany do obszaru izolowanego Java. Piaskownica ograniczy niezaufany kod do pomyślnego wykonania zaufanych operacji, takich jak:
  • Dzwonienie na kod macierzysty
  • Korzystanie z aplikacji COM
  • Korzystanie z J/Direct
  • Nawiązywanie połączenia z komputerami zdalnymi
  • Drukowania
  • Korzystanie z JDBC
  • Tworzenie okien najwyższego poziomu, które nie mają programu appletwarning
Aby klasy były uruchamiane z uprawnieniami powyżej poziomu obszaru izolowanego, należy dostarczyć je do komputera klienckiego w podpisanym pliku cabinet (CAB). Po podpisaniu pliku CAB należy również określić uprawnienia, które są wymagane dla zawartych w niej klas. W programie Microsoft Internet Explorer 4 są dostępne trzy wstępnie zdefiniowane poziomy uprawnień (niska, średnia i wysoka).x:
  • Uprawnienia wysokie są równoważne z obszarem izolowanym Java. Theonly zaletą logowania w tym scenariuszu jest to, że można zapewnić użytkownikowi kod część, że osoba trzecia nie zmieniła kodu.
  • ŚREDNIE uprawnienia są takie same jak w przypadku wysokiego poziomu, ale zezwalają foraccess na szkicownik w szkicowniku na komputerze lokalnym.
  • NISKIE uprawnienia zasadniczo przyznawanie dostępu do wszystkich theoperations wymienionych powyżej.

Uprawnienie potwierdzenia

W poniższym artykule z bazy wiedzy Knowledge Base przedstawiono informacje o tym, dlaczego, dlaczego i jak należy poszukać uprawnień w kodzie Java:
175622 SecurityExceptionEx wyjątek podczas uruchamiania apletu Java

Tworzenie pliku cab

Teraz, gdy zrozumiesz koncepcję ładowania, zaufania i uprawnień, następnym krokiem jest znajomość sposobu tworzenia pliku cab. Na tym etapie należy zdecydować, czy chcesz zainstalować swój kod na komputerze użytkownika, czy też po prostu spakować kod w pliku CAB, aby przyspieszyć pobieranie po każdej wizycie na stronie. Jeśli nie chcesz instalować kodu na komputerze lokalnym, możesz po prostu utworzyć plik CAB przy użyciu narzędzia cabarc. exe i uzyskać odwołanie do pliku CAB za pomocą parametru przekazanego do apletu z poziomu kodu HTML. Jest to przedstawione w przykładzie 1 w dalszej części tego artykułu. Uwaga Ta metoda nie wymaga podpisania pliku CAB, jeśli kod nie jest potrzebny do uruchamiania jako zaufany. Możesz nadal korzystać z zalet pojedynczego skompresowanego pliku, a nie poszczególnych plików zajęć. Jeśli chcesz zainstalować swój kod na komputerze lokalnym, istnieją dwa podejścia. Jednym ze sposobów jest utworzenie jednostki dystrybucyjnej (DU) za pomocą narzędzia Dubuild. exe w zestawie SDK for Java. To narzędzie tworzy plik CAB i zawiera automatycznie wygenerowany plik OSD. Zobacz przykład 2 w dalszej części tego artykułu. Inną metodą instalacji kodu na komputerze lokalnym jest użycie pliku inf. Ta metoda jest nieco bardziej wykorzystana i może być bardziej narażona na błędy, ale ma odmienną zaletę, że jest to jedyna metoda współdziałania w programie Internet Explorer 3.x i nowszych. Zobacz przykład 3 w dalszej części tego artykułu. Każda z tych metod umożliwia pobranie kodu z pierwszej wizyty na stronie i niewymaganie kolejnego pobierania po kolejnych wizytach, chyba że będzie dostępna nowsza wersja. Wymaga to jednak trwałego miejsca na dysku lokalnym użytkownika.

Używanie podpisu cyfrowego w pliku CAB

Musisz podpisać skrzynkę internetową, ilekroć kod musi wykonać coś poza obszarem izolowanym Java lub gdy chcesz zainstalować kod na komputerze lokalnym ze strony sieci Web. Użytkownik podpisuje plik CAB przy użyciu narzędzia Signcode. exe w zestawie SDK for Java. W przykładach w dalszej części tego artykułu przedstawiono kilka typowych scenariuszy podpisywania. Dodatkowe informacje można znaleźć w temacie "Znajdowanie plików cabinet z uprawnieniami Java" w dokumentacji dotyczącej zestawu SDK dla języka Java i w następującej lokalizacji: W zestawie SDK kliknij pozycję indeks , a następnie kliknij pozycję S. Przewiń Aby znaleźć "Pliki cabinet z uprawnieniami Java". Poniżej przedstawiono kilka najważniejszych kwestii, o których należy pamiętać:
  • Szczegółowe uprawnienia Java zostały dodane w narzędziach MicrosoftVM i podpisywaniu w zestawie SDK dla języka Java 2,0 i nowszych.
  • Stosowanie uprawnień szczegółowych może pomóc w ograniczeniu exposureasu pakietu Java przez ograniczenie dostępu dozwolonego do bareminimum wymaganych przez projekt.
  • W momencie podpisywania są wymagane uprawnienia szczegółowe, przy użyciu inifile. Aby uzyskać dodatkowe informacje, zobacz dokumentację dotyczącą zestawu SDK dla języka Java zatytułowaną "JavaPermissions. ini Values".
Na koniec możesz korzystać z certyfikatu testowego w celach programistycznych (jak pokazano w przykładach w dalszej części tego artykułu), ale certyfikat rzeczywisty będzie wymagany przed wdrożeniem aplikacji. Urząd certyfikacji może uzyskać rzeczywisty certyfikat. Firma VeriSign jest teraz w trakcie wystawiania certyfikatów z pełnym ubezpieczeniem na potrzeby korzystania z technologii Authenticode. Możesz skontaktować się z firmą VeriSign w następującej lokalizacji: Aby uzyskać więcej informacji na temat sposobu tworzenia, sposobu wyświetlania i zarządzania certyfikatami, odwiedź następującą witrynę Microsoft Developer Network (MSDN) w sieci Web:

Tagi odwołujące się do podpisanego pliku CAB

Istnieje kilka opcji umożliwiających odwołanie do podpisanego pliku CAB w formacie HTML. Poniżej przedstawiono listę i krótkie porównanie różnych metod:
  • cabbase parametry do znacznika APLETu
  • parametry Cabinet do znacznika APLETu.
  • useslibrary, useslibrarycodebase i useslibraryversionparameters do znacznika APLETu
  • cabbase parametry do znacznika OBJECT
  • parametry Cabinet do znacznika OBJECT
  • useslibrary, useslibrarycodebase i useslibraryversionparameters do znacznika OBJECT

Kod zaufany w programie Internet Explorer dla komputerów Macintosh

W programie Internet Explorer dla komputerów Macintosh nie jest obsługiwany program Authenticode. Aby włączyć dostęp do pobranego kodu poza obszar izolowany Java, użytkownik musi dodać serwer do listy zaufanych witryn, a następnie ustawić uprawnienia witryny do tych, których wymaga dany kod.

Pobieranie

W poniższej klasie Java można użyć następujących trzech krótkich przykładów. Wytnij ten tekst i wklej go do pliku o nazwie Simple. Java. Uwaga Upewnij się, że masz wersję pliku JVC. exe w ścieżce z poziomu zestawu SDK dla języka Java 2,0 (kompilacja 4337) lub nowszego. Ta klasa będzie mieć uprawnienie do potwierdzenia prostej i wyświetlać system Win32 MessageBox po uruchomieniu:
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);}
Uwaga Pozycja wysuw wiersza polecenia jest wstawiana w wierszach poleceń programu Signcode. exe poniżej. Te wiersze poleceń są za długie, aby zmieściły się w jednym wierszu w bazie wiedzy Microsoft Knowledge Base, ale powinny być edytowane w plikach wsadowych w celu uzyskania pojedynczego wiersza.

Przykład 1-Simple1

W tym przykładzie pokazano podpisany plik CAB, który nie został zainstalowany na komputerze lokalnym. Możesz użyć poniższych poleceń, aby skompilować proste. Java, utworzyć plik CAB zawierający prostą klasę, włączyć testowy katalog główny na komputerze lokalnym, utworzyć certyfikat testowy, podpisać plik CAB za pomocą niskich uprawnień Java za pomocą certyfikatu testowego, a następnie uruchomić stronę Simple1. html w przeglądarce. Wytnij te polecenia i wklej je w pliku wsadowym o nazwie GO1 .Collection, a następnie Zapisz je w tym samym katalogu, w którym znajduje się prosty plik. Java utworzony powyżej:
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
Przed wykonaniem GO1 .Collection należy wyciąć i wkleić poniższy kod HTML do pliku o nazwie Simple1. html i umieścić go w tym samym katalogu, co pliki o nazwach Simple. Java i GO1 .Collection utworzone wcześniej:
<HTML> <APPLET CODE="simple.Simple" WIDTH=100 HEIGHT=100> <PARAM NAME="cabbase" VALUE="mycab1.cab"> </APPLET></HTML>
Uwaga Parametr "Cabinet" działa zamiennie z parametrem "cabbase" na komputerach z uruchomionym programem Internet Explorer 4,0 lub nowszym. Parametr "Cabinet" ma dodatkowe funkcje zezwalające na odwoływanie się do wielu plików CAB z tego samego tagu APPLET.

Przykład 2-Simple2

W tym przykładzie pokazano podpisany plik CAB, który jest instalowany w programie Java Package Manager (JPM) na komputerze lokalnym. Możesz użyć poniższych poleceń, aby skompilować proste. Java, utworzyć plik CAB zawierający proste. Class and dubuild wygenerowany plik OSD, włączyć główny katalog główny na komputerze lokalnym, utworzyć certyfikat testowy, podpisać plik CAB za pomocą niskich uprawnień Java przy użyciu certyfikatu testowego i uruchomić stronę Simple2. html w przeglądarce. Wytnij te polecenia i wklej je w pliku wsadowym o nazwie Go2 .Collection, a następnie Zapisz je w tym samym katalogu, w którym znajduje się prosty plik. Java utworzony wcześniej:
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
Przed wykonaniem Go2 .Collection należy wyciąć i wkleić poniższy kod HTML do pliku o nazwie Simple2. html i umieścić go w tym samym katalogu, co pliki o nazwach Simple. Java i Go2 .Collection utworzone wcześniej:
<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>
Po zainstalowaniu pakietu na komputerze lokalnym przy użyciu JPM będzie on dostępny w folderze "<windir> \Downloaded Program Files". Ten folder służy do wyświetlania i usuwania pakietów instalowanych za pomocą programu Internet Explorer.

Przykład 3-Simple3

W tym przykładzie pokazano podpisany plik CAB, który instaluje plik Simple. Class w <windir> \java\lib\simple Directory na komputerze lokalnym. Możesz użyć poniższych poleceń, aby skompilować proste. Java, utworzyć plik CAB zawierający proste. Classes i plik inf, które są tworzone, Włącz katalog główny testów na komputerze lokalnym, Utwórz certyfikat testowy, podpisz plik CAB za pomocą niskich uprawnień Java przy użyciu certyfikatu testowego i Uruchom stronę Simple3. html w przeglądarce. Wytnij te polecenia i wklej je w pliku wsadowym o nazwie GO3 .Collection, a następnie Zapisz je w tym samym katalogu, w którym znajduje się prosty plik. Java utworzony wcześniej:
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
Przed wykonaniem GO3 .Collection należy wyciąć Poniższy kod HTML i wkleić go do pliku o nazwie Simple3. html i umieścić go w tym samym katalogu, co pliki o nazwach Simple. Java i GO3 .Collection utworzone wcześniej:
<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>
Uwaga W poniższych instrukcjach Zastąp identyfikator GUID powyżej "99999999-9999-9999-9999-999999999999" plikiem utworzonym dla pliku inf. Wykonaj poniższe czynności, aby utworzyć prosty plik inf, który ma zostać uwzględniony w zewnętrznym pliku CAB:
  1. Skopiuj plik Master. inf z zestawu <SDK-dir> \bin\packsigndirectory.
  2. Zmień nazwę nowej kopii pliku Master. inf na Simple. inf.
  3. Otwórz prosty plik inf w edytorze tekstu.
  4. Zmień następujące wiersze z:
    run=extrac32.exe /e /a /y /l %49000% CabFileName.cab
    Do
    run=extrac32.exe /e /a /y /l %49000% mycab3.inner.cab
    Przed
    InfFile=master.inf
    Do
    InfFile=simple.inf
    Przed
    ClassId="{99999999-9999-9999-9999-999999999999}"
    Do
    1. Uruchom program Guidgen. exe (z katalogu <SDK-dir> \bin).
    2. Wybierz opcję #4 "Format rejestru".
    3. Naciśnij przycisk "nowy GUID".
    4. Naciśnij przycisk "Kopiuj".
    5. Wklej nowy identyfikator GUID ze schowka do wiersza powyżej w prostym pliku inf i w kodzie HTML.
    Przed
    PackageName="name"
    Do
    PackageName="SIMPLE3"
    Przed
    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"aa,bb,cc,dd"
    Do
    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"1,1,23,0"
    Przed
    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\<filename>"
    Do
    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\simple\Simple.class"
  5. Zapisz zmiany wprowadzone w prostym InfFile.
  6. Uruchom poprzednio utworzony plik GO3 .Collection.
Uwaga 1 Po uruchomieniu poprzednich przykładów należy wyłączyć testowy katalog główny na komputerze lokalnym, uruchamiając polecenie "setreg. exe 1 false". Zapobiegnie to uznawaniu głównego certyfikatu przez program Internet Explorer jako rzeczywisty certyfikat. Element główny test można zawsze ponownie włączyć przy użyciu "setreg. exe 1 true". Uwaga 2 Przy podpisywaniu pliku CAB do użytku produkcyjnego należy uwzględnić następujące testy:
  1. Wszystkie poprzednie polecenia generują certyfikat andimmediately ze znakiem. Większość osób odtwarza swoje certyfikaty każdemu timethey, tworząc i podpisując plik CAB, ale nie robi tego, Jeśli publikujesz plik CAB. Możesz kupić certyfikat i korzystać z niego i uważnie go śledzić. Poprzednie polecenia tworzą certyfikat testowy, ale wystarczy tylko thisIf, ale nie zakupiono go. W ten sposób można się zalogować, jeśli w rejestrze jest PVK fileinstead, ponieważ niektóre osoby otrzymują theirkeys w tym formularzu. Podstaw "-v moja CertName. PVK" dla "-k NazwaKlucza".
  2. Po uruchomieniu polecenia Signcode. exe należy probablyadd opcję "-t http://timestamp.verisign.com/scripts/timstamp.dll", toproperly sygnaturę czasową w pliku CAB. Wystąpiła niethesesamples, aby zezwolić na pomyślne wykonywanie polecenia dla użytkowników, którzy nie mają persistentconnection z Internetem.
Uwaga 3 Program Microsoft Visual J++ 6,0 zapewnia proste pakowanie składników Java. Aby uzyskać dodatkowe informacje, zobacz Karta wyjście w oknie dialogowym właściwości projektu oraz dokumentacja produktu. Jednostki dystrybucyjne utworzone w programie Visual J++ 6,0 w celu zainstalowania pakietu Użyj JPM.Uwaga 4 Możesz skonfigurować program Internet Explorer 4.wartość x lub nowsza, aby traktować kod niepodpisany jako mający domyślnie więcej niż uprawnienia w obszarze piaskownicy. Należy to zrobić tylko w przypadku specjalistycznych sytuacji, takich jak intranecie lub do celów testowych. W przypadku wybrania opcji konfiguracji programu Internet Explorer w ten sposób należy poinformować, że nie będziesz już mieć ochrony przed złośliwym kodem Java uruchamianym na komputerze. Aby na przykład automatycznie traktować wszystkie aplety języka Java jako całkowicie zaufane strefy intranetowej, wykonaj następujące czynności:
  1. Przejdź do karty zabezpieczenia w DialogBox właściwości internetowe.
  2. Wybierz lokalną strefę intranetową.
  3. Wybierz opcję Niestandardowa, a następnie kliknij pozycję Ustawienia.
  4. Znajdź element uprawnienia Java na liście i chooseCustom.
  5. Wybierz pozycję niestandardowe, a następnie kliknij pozycję niestandardowe ustawienia Java.
  6. Przejdź do karty Edytowanie uprawnień.
  7. W obszarze Uruchom niepodpisany zawartość kliknij pozycję Włącz.

MATERIAŁY REFERENCYJNE


Aby uzyskać dodatkowe informacje o problemach dotyczących zabezpieczeń i pakowania na maszynie wirtualnej firmy Microsoft, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
175622 SecurityExceptionEx wyjątek podczas uruchamiania apletu Java
177168 W jaki sposób maszyna wirtualna Java wyszukuje klasy Java?
179652 Jak wdrożyć język Java w programie Internet Explorer 4,0 i Netscape 4,0
181374 Artykuły dotyczące pobierania składników pokrewnych
Aby uzyskać więcej informacji na temat problemów z pobieraniem kodu, odwiedź następującą witrynę MSDN w sieci Web: Aby uzyskać najnowsze artykuły z bazy wiedzy Knowledge Base oraz inne informacje o pomocy technicznej dotyczące języka Visual J++ i zestawu SDK dla języka Java, odwiedź następujące strony w witrynie pomocy technicznej firmy Microsoft: