Comment faire une signature numérique dans une application web (JavaScript) à l'aide d'une carte à puce?
Nous avons rédigé un document de système de gestion et souhaitez signer numériquement des documents en utilisant le client web. Notre client Java application est déjà capable d'appliquer et de vérifier la signature numérique, mais nous tenons à faire signature, même avec nos client web. C'est écrit dans GWT et donc, lorsqu'il est exécuté sur le côté client, c'est une application JavaScript.
Nous voulons pas créer une applet Java et de le télécharger sur le client et de l'exécuter. Nous aimerions utiliser le navigateur de la sécurité de l'appareil ou dans le navigateur de l'API afin de signer un document. Nous tenons également à garder le document complet côté serveur, et de le déplacer pour le client que le document de hachage.
Nous pensons que cela devrait être possible en utilisant NSS ou npapi/npruntime, mais nous n'avons pas trouvé aucune information à ce sujet. (En passant, c'est npruntime disponible également dans IE? Devrions-nous utiliser ActiveX pour atteindre le même résultat avec IE?)
Avez-vous des conseils?
OriginalL'auteur eppesuig | 2012-05-11
Vous devez vous connecter pour publier un commentaire.
Après quelques recherches sur google j'ai trouvé la réponse. Mozilla exporter une partie de sa NSS module via de la fenêtre.crypto objet. Un plus standard de la manière de faire une telle opération est probablement par l'intermédiaire de DOMCrypt, qui est actuellement examine en du W3C.
Google Chrome developer attendre W3C pour normaliser DOMCrypt, tandis que Microsoft nécessitent l'utilisation d'un objet ActiveX comme expliqué ici (cela fonctionne aussi avec Firefox/Chrome/Opera sur Windows).
Merci @ares , le DOMcrypt.org DNS semble être attribué à un propriétaire différent maintenant. J'ai changé le lien vers une autre page, le contenu est semblable.
de la fenêtre.crypto a pas supprimé après la version 33?
OriginalL'auteur eppesuig
Actuellement (mai 2016), il n'est pas possible.
Chrome a abandonné le support de Java. "Windows edge" n'auront pas. IE11 soutien est mauvais, et l'Oracle a décidé d'arrêter le plugin java. Il serait possible uniquement avec Firefox, les anciennes versions d'IE et le plugin Java.
La nouvelle WebCryptographyApi norme fournit signature numérique de soutien pour les navigateurs, mais il n'a pas pcks#11
Réel e-gouvernement solution pour résoudre ce problème:
1) Installer un local d'une application Java sur le PC de l'utilisateur. L'application est à l'écoute sur un port, par exemple 5678
2) Dans votre page, javascript détecte si il ya un soutien pour les applets
3) Si il n'y a pas de soutien, se connecte à l'application sous la forme http://127.0.01:5678/sign et envoie les données à signer.
4) L'application est locale et n'a pas de difficulté à utiliser le système d'exploitation du fichier de clés, qui comprend des pilotes PKCS # 11. Faire de signature numérique et prépare la suite
5) page javascript périodiquement le résultat de la requête et récupère quand vous serez prêt
Il y a une solution en Espagne dans l'e-gouvernement pour les résoudre. Je vais document dans la réponse
OriginalL'auteur pedrofb
Un projet que j'ai été impliqué avec fait avec Chrome et Natif de Messagerie:
https://github.com/CACBridge/ChromeCAC
Cela nécessite l'installation du plugin chrome, mais sinon fonctionne très bien. Idéal pour, par exemple, Intranet/Groupe des environnements où vous savez que vous aurez besoin de le faire à l'avance.
OriginalL'auteur Yablargo
Dans Win/IE, vous pouvez toujours utiliser CAPICOM http://en.wikipedia.org/wiki/CAPICOM sans un tiers des contrôles ActiveX ou des bibliothèques externes.
Cela fonctionne n'importe où IE est installé.
C'est être à la retraite.
Ci-dessous est ce que j'utilise pour signer dans IE. J'appelle cela avec e.g:
var signature = signDigest(stringToBeSigned);
J'ai eu quelques problèmes avec l'encodage,etc, de sorte que j'ai inclus dans mon contrôleur (.net) ainsi
Seulement, parfois, s'il est 'foiré' -- je ferme le navigateur, ouvrir, et il demande des informations d'identification. Je reçois parfois un point où il cesse de lui demander, mais à recharger le navigateur a toujours semble résoudre ce problème.
OriginalL'auteur Yablargo
Maintenant vous pouvez le faire. Application Web basée sur PKCS#11 cartes à puce ou des jetons peuvent être mises en œuvre à l'aide de la version Silverlight de NCryptoki. Voir http://www.ncryptoki.com
Vous avez deux chanches:
1) à l'aide de la version Silverlight de NCryptoki et de développer votre propre Silverlight de Contrôle de l'Utilisateur qui l'implémente la logique, une Signature Numérique dans votre cas, à l'aide de PKCS#11 fonctions fournies par la carte à puce
2) à l'aide du plugin JQuery basé sur la ci-dessus version Silverlight et de mettre en œuvre votre application en JavaScript en appelant le PKCS#11 fonctions en JavaScript
Aussi, vous pouvez utiliser la version Silverlight de NDigitSign (voir à nouveau http://www.ncryptoki.com) qui fait tout que vous avez besoin et peut être mis en œuvre dans n'importe quel navigateur web.
OriginalL'auteur Ugo