Pourquoi devrais-je signer mes fichiers JAR?

Pourquoi devrais-je signer mes fichiers JAR?

Je sais que je dois signer mes fichiers JAR côté client (contenant des applets) pour que des éléments spéciaux, tels que l’access au système de fichiers, puissent être exécutés et que le bit ennuyeux au bas de Windows ne s’affiche pas. Dois-je signer mes fichiers JAR côté serveur contenant des Servlets, etc.?

Quelques règles de base pour savoir quand et quand ne pas signer les JAR seraient appréciées – merci!

La réponse courte – ne pas, à moins que la politique de votre entreprise vous oblige à.

La longue réponse
La signature des pots indique effectivement à votre client: «Je l’ai fait et je vous garantis que cela ne nuira pas à votre système. Si c’est le cas, venez me voir pour obtenir une résortingbution». C’est pourquoi les fichiers JAR signés dans une solution côté client déployée à partir de serveurs distants (applets / Webstart) bénéficient de privilèges plus élevés que les solutions non signées.

Sur les solutions côté serveur, où vous n’avez pas besoin de satisfaire les exigences de sécurité de la JVM, cette garantie est réservée à la tranquillité de vos clients.
La mauvaise chose à propos des pots signés est qu’ils se chargent plus lentement que les pots non signés. Combien plus lent? c’est lié au CPU, mais j’ai remarqué une augmentation de plus de 100% du temps de chargement. De plus, les correctifs sont plus difficiles (vous devez signer à nouveau le fichier JAR), les correctifs de classe sont impossibles (toutes les classes d’un même package doivent avoir la même source de signature) et la division des fichiers JAR devient une corvée. Sans compter que votre processus de construction est plus long, et que les bons certificates coûtent de l’argent (l’auto-signature est presque inutile).

Ainsi, à moins que la stratégie de votre société ne vous oblige à signer des fichiers JAR du côté du serveur et à conserver des fichiers JAR dans des versions signées et non signées (signés, accédez au déploiement côté client, rendez-vous non signés sur le serveur) ).

Une bonne raison pourrait être que vous ne vouliez jamais que quelqu’un puisse introduire des classes modifées pour être appelé par votre code.

Malheureusement, cela inclut vous-même 😀 Donc ceci ne doit être fait que si vous en avez vraiment besoin. Vérifiez le concept de “pot scellé”.

En termes d’applets: À partir de 6u10, le Sun JRE remplace la bannière d’avertissement par un sortingangle de présignalisation moins intrusif (à partir de 6u12, IIRC) (nécessaire pour prendre en charge des fenêtres en forme et transparentes). 6u10 permet également un access contrôlé aux fichiers via l’API de services JNLP.

Le principe du moindre privilège dit que vous ne devez pas signer les classes de vos fichiers jar. La sécurité n’est pas forcément facile.

Le simple fait d’afficher une boîte de dialog de certificate ne doit pas être interprété comme signifiant que tout le contenu d’une page Web doit être approuvé.

La signature d’un fichier jar, tout comme l’utilisation de certificates dans d’autres contextes, permet aux utilisateurs de savoir d’où il vient. Les gens peuvent avoir confiance que Chris Carruthers ne va pas écrire de code malveillant, et ils sont donc disposés à autoriser votre applet à accéder à leur système de fichiers. La signature leur donne une garantie que le pot a bien été créé par vous, et non par un imposteur ou une personne en qui il n’a pas confiance.

Dans le cas des fichiers jar, côté serveur ou bibliothèque, il n’est généralement pas nécessaire de fournir ce type de garantie à quiconque. Si c’est votre serveur, vous savez quels jars vous utilisez et d’où ils proviennent, et vous faites probablement confiance à votre propre code pour qu’il ne soit pas malveillant.