3

W3C travaille sur un http://www.w3.org/TR/WebCryptoAPI/ pour définir un moyen de générer des signatures numériques, crypter et ainsi de suite à partir de javascript. Définit fondamentalement un nouvel objet crypto à l'intérieur d'un objet window dans DOM qui doit fournir javascript avec des fonctionnalités de signature et de cryptage. Chrome commence à implémenter cet objet qui est actuellement disponible dans son moteur javascript (je pense en version bêta), je fais quelques tentatives pour générer quelques signatures avec ça semble fonctionner correctement, mais je pense que la façon la plus utile de générer des signatures numériques avec Ce nouvel objet utilise les clés privées dans le fichier de clés du système d'exploitation à la place du matériel de clé généré automatiquement, mais cet accès n'est pas couvert dans ce brouillon de travail.js signature sur chrome avec keystore OS

Je travaille depuis plusieurs années avec une applet de signature pour gérer le keystore OS (MS, Firefox KS, MAC OS X) mais je veux faire directement en javascript si on peut éviter tous les problèmes que l'applet produit jours ... nouvelles exigences de sécurité Oracle, nouveaux attributs MANIFEST.MF, plugins de blocage de navigateur et ainsi de suite qui sont une vraie douleur!

Je suis à la recherche d'une manière javascript pour le faire et semble que tous les principaux navigateurs prendre sa manière:

  • Dans Internet Explorer il y a une ActiveXObject pour accéder aux fenêtres keystore:

    // instantiate the CAPICOM objects 
    var store = new ActiveXObject("CAPICOM.Store"); 
    store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); 
    ... 
    
  • Pour accéder à Firefox Keystore semble que firefox ajouter une méthode signText dans window.crypto (plus d'informations sur la mise en œuvre Firefox webCryptoAPI here et de la mise en œuvre exclusive here):

    window.crypto.signText("textToSign", "ask");

EDIT: Cette méthode firefox il est obsolète depuis la version 34, car ce n'est pas une norme: https://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto

Cependant le chrome semble ne actuellement existe rien à faire de même.

Alors quelqu'un sait comment y parvenir dans Chrome? Quelqu'un connaît-il un moyen commun de le faire dans tous les navigateurs? Tout conseil pour me donner dans la bonne direction sera apprécié.

Merci!

Répondre

2

Vous devez écrire le composant actif qui accédera à MS Crypto Store et exécutera l'opération cryptographique. Il peut s'agir de l'applet Java ou de l'extension du navigateur Chrome utilisant NativeClient SDK. L'applet Java s'exécutera dans MSIE, Firefox, Chrome et la plupart des autres navigateurs, mais nécessite un environnement JRE (Java Runtime Environment) installé sur l'ordinateur client.

+0

Merci pour votre réponse, je travaille depuis des années avec des applets et chaque jour il est plus difficile de faire face aux problèmes qu'il produit. bugs, nouvelles exigences de sécurité et ainsi de suite. Au moment où je jette un oeil sur NativeClient SDK que vous commentez. +1 Merci. – albciff

+0

@albciff Mon expérience avec les applets Java est ** exactement la même ** mais je ne connais pas vraiment d'autre technologie multiplateforme qui puisse étendre le navigateur avec des fonctionnalités avancées de signature numérique. BTW Je viens d'explorer de plus près NativeClient SDK et il semble ne fournir que des fonctionnalités très limitées: vous ne pouvez pas accéder au système de fichiers ni charger les bibliothèques tierces requises pour l'accès MS Crypto Store. Voir [ce fil de discussion dans la liste de diffusion native-client-discuss] (https://groups.google.com/forum/#!topic/native-client-discuss/C9nR--vt-Ug) pour plus de détails. – jariq

+0

donc probablement nous avons le même problème ... Je fais face à des applets depuis longtemps j'ai récemment plus de problèmes que jamais (java mantra: écrire une fois courir partout ... ne pas appliquer avec des applets quand il s'agit d'OS keystores). Je pense que javascript c'est un bon moyen de le faire mais pour l'instant comme vous l'avez dit, tous les navigateurs n'apportent pas cette fonctionnalité et chaque navigateur qui apporte a sa propre implémentation. Merci encore. – albciff

Questions connexes