Wie erstellt man eine digitale Signatur in einer Webanwendung (JavaScript) mit einer Smartcard?

8

Wir haben ein Dokumentenmanagementsystem geschrieben und möchten Dokumente mit dem Webclient digital signieren. Unsere Java-Client-Anwendung kann bereits digitale Signaturen anwenden und prüfen, aber wir möchten auch mit unserem Webclient eine Signatur erstellen. Dies ist in GWT geschrieben und so, wenn es auf der Clientseite ausgeführt wird, ist es eine JavaScript-Anwendung.

Wir wollen kein Java-Applet erstellen und es auf den Client herunterladen und ausführen. Wir möchten das Browser-Sicherheitsgerät oder die Browser-API verwenden, um ein Dokument zu signieren. Wir möchten auch die gesamte Dokumentenserver-Seite behalten und nur den Dokumenten-Hash auf den Client verschieben.

Wir denken, dass dies mit NSS oder npapi / npruntime möglich sein sollte, aber wir haben dazu keine Informationen gefunden. (Übrigens, ist npruntime auch im IE verfügbar? Sollten wir ActiveX verwenden, um dasselbe Ergebnis mit IE zu erzielen?)

Hast du Hinweise?

    
eppesuig 11.05.2012, 14:31
quelle

5 Antworten

9

Nach etwas mehr googeln fand ich die Antwort. Mozilla exportiert Teile seines NSS-Moduls über das window.crypto -Objekt. Eine Standardmethode für solche Operationen ist wahrscheinlich DOMCrypt , das heißt derzeit diskutiert im W3C . Google Chrome-Entwickler warten auf W3C, um DOMCrypt zu standardisieren, während Microsoft die Verwendung eines ActiveX-Objekts erfordert wie hier erklärt (das funktioniert sogar mit Firefox / Chrome / Opera unter Windows).

    
eppesuig 12.05.2012, 05:27
quelle
4

Momentan (Mai 2016) ist es nicht möglich.

Chrome hat die Java-Unterstützung eingestellt. 'Windows Edge' wird nicht haben. Die IE11-Unterstützung ist schlecht und Oracle hat entschieden, das Java-Plugin nicht mehr zu verwenden. Es wäre nur mit Firefox, älteren Versionen von IE und dem Java-Plugin möglich.

Der neue WebCryptographyApi-Standard bietet Unterstützung für digitale Signaturen für Browser, hat jedoch keine Pcks # 11-Unterstützung

Echte E-Government-Lösung, um das zu lösen: 1) Installieren Sie eine lokale Java-Anwendung auf dem PC des Benutzers. Die Anwendung überwacht einen Port als beispielsweise 5678 2) Auf Ihrer Seite erkennt JavaScript, ob es Unterstützung für Applets gibt 3) Wenn keine Unterstützung vorhanden ist, wird eine Verbindung mit der Anwendung in der Form Ссылка hergestellt und die Daten an das Zeichen gesendet. 4) Die Anwendung ist lokal und hat keine Probleme mit dem Betriebssystem Keystore, der Treiber PKCS # 11 enthält. Machen Sie digitale Signatur und bereitet das Ergebnis vor 5) page javascript fragt regelmäßig das Ergebnis ab und ruft es ab, wenn es fertig ist

    
pedrofb 24.05.2016 18:23
quelle
0

In Win / IE können Sie CAPICOM Ссылка weiterhin ohne ActiveX oder externe Bibliotheken von Drittanbietern verwenden.
Das funktioniert überall wo IE installiert ist.
Dies wird jedoch im Ruhestand.

Im Folgenden verwende ich den IE. Ich rufe das mit dem Beispiel auf: var signature = signDigest (stringToBeSigned);

%Vor%

Ich hatte einige Probleme mit der Kodierung usw., daher habe ich auch meinen Controller (.net) hinzugefügt

%Vor%     
Yablargo 01.07.2013 16:26
quelle
0

Ein Projekt, an dem ich beteiligt war, hat dies mit Chrome und Native Messaging getan:

Ссылка

Dies erfordert die Installation des Chrome-Plugins, funktioniert aber ansonsten großartig. Ideal für z.B. Intranet- / Gruppenumgebungen, in denen Sie wissen, dass Sie dies im Voraus tun müssen.

    
Yablargo 07.11.2016 17:06
quelle
-1

Jetzt können Sie das tun. Webanwendung, die auf PKCS # 11-Smartcards oder -Token basiert, kann mithilfe der Silverlight-Version von NCryptoki implementiert werden. Siehe Ссылка

Sie haben zwei Änderungen:

1) Verwenden Sie die Silverlight-Version von NCryptoki und entwickeln Sie Ihr eigenes Silverlight-Benutzersteuerelement, das Ihre Logik, eine digitale Signatur in Ihrem Fall, mithilfe der von der Smartcard bereitgestellten PKCS # 11-Funktionen implementiert

2) Verwenden Sie das JQuery-Plugin basierend auf der obigen Silverlight-Version und implementieren Sie Ihre Anwendung in JavaScript, indem Sie die PKCS # 11-Funktionen in JavaScript aufrufen

Sie können auch die Silverlight-Version von NDigitSign verwenden (siehe auch Ссылка ), die alles Erforderliche enthält und in jedes Web implementiert werden kann Browser.

    
Ugo 19.10.2013 15:17
quelle