Comment rendre votre code Java digne de confiance dans Internet Explorer

Remarque La machine virtuelle Microsoft Java (MSJVM) et le kit de développement logiciel (SDK) Microsoft pour Java ne sont plus disponibles en distribution auprès de Microsoft. Aucune amélioration n’est apportée à MSJVM ou au kit de développement logiciel (SDK) pour Java. Pour plus d’informations sur les ressources pour les développeurs Java, visitez le site Web de Microsoft suivant :

RÉSUMÉ

Prenez en compte plusieurs facteurs lorsque vous souhaitez que votre code Java s’exécute comme entièrement fiable, partiellement fiable ou non approuvé dans Microsoft Internet Explorer. Cet article décrit la plupart des considérations et pointe vers certaines ressources qui peuvent vous aider à garantir que votre code Java dispose du niveau de confiance approprié lorsqu’il s’exécute dans le navigateur.

INFORMATIONS SUPPLÉMENTAIRES

Chargeur de cours

Il est important de comprendre la signification du chargeur de classe dans Java. Le chargeur de classe contrôle une grande partie de la sécurité et de l’accès accordés à une classe. L’article suivant de la base de connaissances Microsoft décrit le moment où la machine virtuelle Microsoft (VM) utilise différents chargeurs :

Comment est-ce que l’ordinateur virtuel recherche les classes Java ?Grâce à ces informations, vous pouvez prendre une décision plus éclairée concernant la méthode d’obtention d’autorisations supplémentaires adaptée à votre projet.

Signification pour être approuvé

Le terme approuvé signifie que le code n’est plus confiné au sandbox Java. Le bac à sable (sandbox) limite le code non approuvé d’exécution réussie des opérations approuvées, telles que :

  • Appel de code natif

  • Utiliser COM

  • Utiliser J/direct

  • Connexion aux ordinateurs distants

  • Imprimé

  • Utilisation de JDBC

  • Création de fenêtres de niveau supérieur qui n’ont pas le appletWarning

Pour que vos classes s’exécutent avec des autorisations au-dessus du niveau de bac à sable (sandbox), les classes doivent être transmises à l’ordinateur client à l’intérieur d’un fichier CAB signé. Lorsque vous signez le fichier CAB, vous devez également spécifier les autorisations nécessaires aux classes contenues. Il existe trois niveaux prédéfinis d’autorisations (faible, moyen et élevé) dans Microsoft Internet Explorer 4.x:

  • Les autorisations élevées sont équivalentes au sandbox Java. TheOnly avantages de la connexion dans ce scénario est que vous pouvez vous assurer que le code de l’utilisateur ofyour qu’un tiers n’a pas modifié le code.

  • Les autorisations moyennes sont les mêmes que celles de niveau supérieur, mais permettent à foraccess d’avoir accès à un plan de montage sur l’ordinateur local.

  • Les autorisations inférieures accordent essentiellement l’accès à toutes les theoperations répertoriées précédemment.

Autorisation d’assertion

L’article de la base de connaissances suivant fournit suffisamment d’informations pour comprendre à quel moment, pourquoi et comment vous devez affirmer l’autorisation dans votre code Java :

Exception SecurityExceptionEx exécutant une applet Java

Création du fichier CAB

Maintenant que vous comprenez le concept de chargeurs, de confiance et d’autorisations, l’étape suivante consiste à savoir comment créer le fichier CAB. À ce stade, vous devez décider si vous souhaitez installer votre code sur l’ordinateur de l’utilisateur ou simplement empaqueter votre code dans un fichier CAB pour un téléchargement plus rapide lors de chaque visite de votre page. Si vous ne voulez pas installer votre code sur l’ordinateur local, il vous suffit de créer un fichier CAB à l’aide de l’utilitaire CABARC. exe et de faire référence au fichier CAB à partir d’un paramètre transmis à votre applet à partir de HTML. Ceci est illustré dans l’exemple 1, plus loin dans cet article. Remarque Cette méthode n’exige pas que vous signez le fichier CAB si votre code ne doit pas être exécuté comme approuvé. Vous pouvez toujours tirer parti d’un téléchargement de fichier compressé unique au lieu de fichiers de classe individuels. Si vous souhaitez installer votre code sur l’ordinateur local, vous pouvez procéder de deux manières. Pour cela, il est possible de créer une unité de distribution à l’aide de l’utilitaire DUBUILD. exe dans le kit de développement logiciel (SDK) pour Java. Cet utilitaire crée un fichier CAB et inclut un fichier. OSD généré automatiquement. Voir Sample 2, plus loin dans cet article. Pour installer du code sur l’ordinateur local, vous pouvez utiliser un fichier. inf. Cette méthode est plutôt plus manuelle et de plus en plus sujette à Erreurs, mais elle présente l’avantage d’être la seule méthode qui fonctionne sur Internet Explorer 3.x et versions ultérieures. Voir exemple 3 plus loin dans cet article. Chacune de ces méthodes a l’avantage de télécharger votre code lors de la première visite de la page et de ne pas demander un autre téléchargement lors de visites ultérieures, sauf si une nouvelle version est disponible. Ils nécessitent toutefois un espace permanent sur le disque local de l’utilisateur.

Utilisation d’une signature numérique sur votre fichier CAB

Vous devez signer votre CAB chaque fois que votre code doit effectuer une opération en dehors du sandbox Java ou lorsque vous souhaitez installer du code sur l’ordinateur local à partir d’une page Web. Pour signer un fichier CAB, vous pouvez utiliser l’utilitaire Signcode. exe dans le kit de développement logiciel (SDK) pour Java. Les exemples fournis plus loin dans cet article montrent quelques scénarios de signature courants. Des informations supplémentaires sont disponibles dans la rubrique Rechercher « signature de fichiers CAB avec des autorisations Java » de la documentation et des exemples du kit de développement logiciel (SDK) Java dans le dossier suivant :

Dans le kit de développement logiciel (SDK), cliquez sur index , puis sur S. Scroll pour rechercher « signature de fichiers CAB avec des autorisations Java ». Vous trouverez ci-après quelques points clés à garder à l’esprit :

  • Les autorisations Java affinées ont été ajoutées dans les outils MicrosoftVM et de signature du SDK pour Java 2,0 et les versions ultérieures.

  • L’utilisation des autorisations affinées peut vous aider à limiter l’exposition de votre application à un développeur de package Java en réduisant l’accès accordé aux bareminimum requises par votre projet.

  • Des autorisations affinées sont demandées à l’aide d’un. inifile au moment de la signature. Pour plus d’informations, reportez-vous à la documentation relative au kit de développement logiciel (SDK) pour Java intitulé « JavaPermissions. ini values ».

Enfin, vous pouvez utiliser un certificat de test à des fins de développement (comme illustré dans les exemples ci-dessous), mais un certificat réel sera souhaité avant le déploiement de votre application. Un certificat réel peut être obtenu à l’aide d’une autorité de certification. VeriSign émet désormais des certificats d’assurance complète pour une utilisation avec Authenticode. Vous pouvez contacter VeriSign à l’adresse suivante :

Pour plus d’informations sur la création et la gestion des certificats, consultez le site Web Microsoft Developer Network (MSDN) suivant :

Balises pour faire référence à votre fichier CAB signé

Plusieurs options s’offrent à vous pour référencer votre fichier CAB signé au format HTML. Le tableau suivant répertorie les différentes méthodes :

  • paramètres cabbase à une balise APPLET

  • les paramètres d’armoire pour une balise APPLET.

  • useslibrary, useslibrarycodebase et useslibraryversionparameters à une balise APPLET

  • paramètres cabbase à une balise OBJECT

  • paramètres d’armoires pour une balise d’objet

  • useslibrary, useslibrarycodebase et useslibraryversionparameters à une balise OBJECT

Code de confiance dans Internet Explorer pour Macintosh

Authenticode n’est pas pris en charge dans Internet Explorer pour Macintosh. Pour activer l’accès au code téléchargé en dehors du sandbox Java, l’utilisateur doit ajouter le serveur à la liste des sites de confiance, puis définir les autorisations du site sur celles requises par le code.

EXEMPLES

Vous pouvez utiliser la classe Java suivante avec les trois exemples courts suivants. Coupez et collez ce texte dans un fichier nommé simple. java. Remarque Assurez-vous d’avoir une version de JVC. exe dans votre chemin d’accès du SDK pour Java 2,0 (Build 4337) ou version ultérieure. Cette classe est une autorisation d’assertion simple et affiche un MessageBox Win32 lors de l’exécution :

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);}

Remarque Le saut de ligne est inséré dans les lignes de commande pour Signcode. exe ci-dessous. Ces lignes de commande sont trop longues pour tenir dans une seule ligne de la base de connaissances Microsoft, mais doivent être modifiées dans vos fichiers de commandes en une seule ligne.

Exemple 1-Simple1

Cet exemple montre un fichier CAB signé qui n’est pas installé sur l’ordinateur local. Vous pouvez utiliser les commandes suivantes pour compiler simple. Java, créer un fichier CAB qui contient simple. Class, activer la racine de test de l’ordinateur local, créer un certificat de test, signer le fichier CAB avec des autorisations Java insuffisantes à l’aide du certificat de test et lancer la page Simple1. html dans le navigateur. Coupez et collez ces commandes dans un fichier de commandes appelé Go1. bat et enregistrez-le dans le même répertoire que le fichier simple. Java créé ci-dessus :

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

Avant d’exécuter Go1. bat, coupez et collez le code HTML ci-dessous dans un fichier nommé Simple1. html et placez-le dans le même répertoire que les fichiers nommés simple. Java et Go1. bat créé précédemment :

<HTML> <APPLET CODE="simple.Simple" WIDTH=100 HEIGHT=100> <PARAM NAME="cabbase" VALUE="mycab1.cab"> </APPLET></HTML>

Remarque Un paramètre « cabinets » fonctionne de façon inchangée avec un paramètre « cabbase » sur les ordinateurs exécutant Internet Explorer 4,0 et les versions ultérieures. Le paramètre « armoires » dispose de la fonctionnalité supplémentaire permettant de faire référence à plusieurs fichiers CAB à partir de la même balise d’APPLET.

Exemple 2 : Simple2

Cet exemple montre un fichier CAB signé qui est installé dans le gestionnaire de package Java (JPM) de l’ordinateur local. Vous pouvez utiliser les commandes suivantes pour compiler simple. Java, créer un fichier CAB qui contient les fichiers. Class et DUBUILD. OSD générés, activer la racine de test sur l’ordinateur local, créer un certificat de test, signer le fichier CAB avec des autorisations Java insuffisantes à l’aide du certificat de test et lancer la page Simple2. html dans le navigateur. Coupez et collez ces commandes dans un fichier de commandes appelé Go2. bat et enregistrez-le dans le même répertoire que le fichier simple. Java créé précédemment :

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

Avant d’exécuter Go2. bat, coupez et collez le code HTML ci-dessous dans un fichier nommé Simple2. html et placez-le dans le même répertoire que les fichiers nommés simple. Java et go2. bat créé précédemment :

<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>

Une fois qu’un package est installé sur l’ordinateur local à l’aide de JPM, il est présent dans le dossier « <windir> Program Files ». Utilisez ce dossier pour afficher et supprimer des packages installés à l’aide d’Internet Explorer.

Exemple 3-Simple3

Cet exemple montre un fichier CAB signé qui installe le fichier simple. Class dans le <windir> Directory \java\lib\simple sur l’ordinateur local. Vous pouvez utiliser les commandes suivantes pour compiler simple. Java, créer un fichier CAB contenant des fichiers. Class et. inf que vous créez, activer la racine de test de l’ordinateur local, créer un certificat de test, signer le fichier CAB avec des autorisations Java insuffisantes à l’aide du certificat de test et lancer la page Simple3. html dans le navigateur. Coupez et collez ces commandes dans un fichier de commandes appelé Go3. bat et enregistrez-le dans le même répertoire que le fichier simple. Java créé précédemment :

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

Avant d’exécuter Go3. bat, vous devez couper et coller le code HTML suivant dans un fichier nommé Simple3. html et le placer dans le même répertoire que les fichiers nommés simple. Java et Go3. bat créés précédemment :

<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>

Remarque Remplacez le GUID (« 99999999-9999-9999-9999-999999999999 ») par celui créé pour le fichier. inf dans les instructions suivantes. Pour créer le fichier. inf qu’il est possible d’inclure dans le fichier CAB externe, procédez comme suit :

  1. Copiez le fichier Master. inf du <SDK-dir> \bin\packsigndirectory.

  2. Renommez la nouvelle copie de Master. inf en simple. inf.

  3. Ouvrez le fichier simple. inf dans un éditeur de texte.

  4. Changez les lignes suivantes :

    run=extrac32.exe /e /a /y /l %49000% CabFileName.cab

    À:

    run=extrac32.exe /e /a /y /l %49000% mycab3.inner.cab

    De:

    InfFile=master.inf

    À:

    InfFile=simple.inf

    De:

    ClassId="{99999999-9999-9999-9999-999999999999}"

    À:

    1. Exécutez Guidgen. exe (à partir du <SDK-dir> \bin).

    2. Sélectionnez l’option #4 « format du Registre ».

    3. Enfoncez le bouton « nouveau GUID ».

    4. Enfoncez le bouton « Copier ».

    5. Collez le nouveau GUID à partir du presse-papiers dans la ligne ci-dessus dans le fichier simple. inf et dans le code HTML ci-dessus.

    De:

    PackageName="name"

    À:

    PackageName="SIMPLE3"

    De:

    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"aa,bb,cc,dd"

    À:

    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"1,1,23,0"

    De:

    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\<filename>"

    À:

    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\simple\Simple.class"
  5. Enregistrez les modifications que vous avez apportées à la simple. InfFile.

  6. Exécutez le fichier Go3. bat créé précédemment.

Remarque 1 Après avoir exécuté les exemples précédents, vous devez désactiver la racine de test sur l’ordinateur local en exécutant « setreg. exe 1 false ». Cela empêchera la racine de test d’être honorée en tant que certificat réel par Internet Explorer. Vous pouvez toujours réactiver la racine de test à l’aide de « setreg. exe 1 true ». Remarque 2 Prenez en considération les points suivants lors de la signature de votre fichier CAB pour le test d’utilisation des formules de production :

  1. Toutes les commandes précédentes génèrent la signature de certificat andimmediately. La plupart des utilisateurs recréent leurs certificats chaque fois qu’un timethey est créé et signé pour le CAB, mais vous ne le faites pas si vous publiez le CAB. Vous achetez et utilisez un certificat et vous effectuez le suivi de celui-ci soigneusement. Les commandes précédentes créent un certificat de test, mais vous n’avez besoin que d’thisif vous n’en avez pas acheté. Il s’agit de la manière dont vous vous connectez si les utilisateurs ont une fileinstead. pvk de conservation de la clé dans le registre, car certaines personnes reçoivent theirkeys dans ce formulaire. Remplacez « -v MyCertName. pvk » par « -k KeyName ».

  2. Lorsque vous exécutez la commande Signcode. exe, vous devez probablyadd l’option « -t http://timestamp.verisign.com/scripts/timstamp.dll » toproperly horodatage de la signature sur le fichier CAB. Il était absent de thesesamples pour permettre à la commande d’avoir abouti pour les utilisateurs qui n’ont pas de persistentconnection sur Internet.

Note 3 Microsoft Visual J++ 6,0 fournit un paquet simple de composants Java. Pour plus d’informations, voir l’onglet sortie dans la boîte de dialogue Propriétés du projet et la documentation du produit. Les unités de distribution créées avec Visual J++ 6,0 utilisent l’installation de JPM pour le package.Remarque 4 Vous pouvez configurer Internet Explorer 4.x ou version ultérieure pour considérer le code non signé comme ayant plus d’autorisations par défaut de bac à sable (sandbox). Vous ne devez effectuer cette opération que pour des situations spécialisées comme l’intranet ou à des fins de test. Si vous choisissez de configurer Internet Explorer de cette manière, sachez que vous n’aurez plus de protection contre le code Java malveillant qui s’exécute sur votre ordinateur. Par exemple, si vous souhaitez que toutes les applets Java soient entièrement approuvées dans la zone Intranet, procédez comme suit :

  1. Accédez à l’onglet sécurité dans les propriétés Internet DialogBox.

  2. Sélectionnez la zone Intranet local.

  3. Sélectionnez l’option personnalisée, puis cliquez sur paramètres.

  4. Recherchez l’élément autorisations Java dans la liste, puis chooseCustom.

  5. Sélectionnez personnalisé, puis cliquez sur paramètres personnalisés Java.

  6. Accédez à l’onglet modifier les autorisations.

  7. Sous exécuter du contenu non signé, cliquez sur activer.

RÉFÉRENCES

Pour plus d’informations sur les problèmes liés à la sécurité et au conditionnement sur la machine virtuelle Microsoft, cliquez sur les numéros d’article suivants pour consulter les Articles de la base de connaissances Microsoft :

Exception SecurityExceptionEx exécutant une applet Java

Comment fonctionne la recherche dans les classes Java de la machine virtuelle Java ?

Déploiement de Java dans Internet Explorer 4,0 et Netscape 4,0

Articles liés au téléchargement de composantsPour plus d’informations sur les problèmes de téléchargement de code, visitez le site Web MSDN suivant :

Pour consulter les Articles de la base de connaissances ainsi que d’autres informations de prise en charge sur Visual J++ et le kit de développement logiciel (SDK) pour Java, veuillez consulter les pages suivantes sur le site du support technique de Microsoft :

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×