1

J'ai généré une paire de clés et créé un certificat auto-signé en utilisant la bibliothèque JavaScript WebCrypto API et un service Web tiers en utilisant une requête CSR. Maintenant, je veux stocker le certificat avec la clé privée dans le magasin de certificats personnels Windows du PC client. J'ai trouvé here cela par JavaScript ce n'est pas possible. En utilisant java c'est facilement possible. Mais comme jApplet est déconseillé maintenant, il en est de même pour le client. En créant des extensions chrome/mozilla, cela sera-t-il possible non plus?Comment importer un certificat personnel dans Windows os certificat store de Chrome/Mozilla côté client

Notez que, je comprends si j'exporte le certificat en tant que fichier avec la clé privée, je peux l'importer manuellement dans le magasin de certificats de Windows en tant que certificat personnel. Mais je veux automatiser le processus comme - l'utilisateur suffit de remplir le formulaire à partir du navigateur et par la communication du serveur, le certificat sera créé et sera stocké dans le magasin Windows du client avec la clé privée.

+0

Avec WebCrypto vous pouvez générer une paire de clés, mais pas un certificat. Avez-vous demandé un certificat à une autorité de certification en utilisant une requête CSR? – pedrofb

+0

Oui, en appelant un service Web tiers à l'aide d'un CSR. Mise à jour de la question Thnx @pedrofb – user1366645

Répondre

3

Je ne pense pas que vous avez trop d'options

  • Vous ne pouvez pas accéder à de javascript pour keystore utilisé par le navigateur en raison des restrictions de sécurité

  • Vous ne pouvez pas créer une extension de chrome pour accéder à keystore utilisé par le navigateur car l'API chrome ne le publie pas (je ne suis pas sûr avec firefox)

  • Vous ne pouvez pas utiliser une applet car Java n'est pas pris en charge par Chrome et Edge. Firefox baissera soutien aux plug-ins NPAPI dans Mars 2017 (l 'java utilise NPAPI), et les prochaines versions de Java ne comprennent pas le plugin du navigateur,

Alternatives:

  • Générer un fichier .p12 avec la clé privée et le certificat (côté client), téléchargez et ouvrez-le. Le système d'exploitation va lancer l'outil de certificat d'importation

  • Utilisez WebCryptographyApi, si vous avez besoin du certificat pour effectuer des opérations de chiffrement sur le navigateur (signature numérique, chiffrement, ...). Vous pouvez générer le fichier .p12 plus tard

+0

Pouvez-vous me guider sur la façon de générer un fichier .pfx/.p12 avec la clé privée et le certificat côté client - javascript – user1366645

+0

Vous devez utiliser une bibliothèque javascript prenant en charge les fichiers PKCS # 12. Voir par exemple [forge] (https://github.com/digitalbazaar/forge#pkcs12) et [pki.js] (https://pkijs.org/examples/PKCS12SimpleExample.html). Construisez le p12 en extrayant la clé privée de webcrypto et obtenez le certificat et la chaîne de certification retournés par le serveur. Voir la ma réponse ici http://stackoverflow.com/questions/36018233/how-to-load-a-pkcs12-digital-certificate-with-javascript-webcrypto-api pour voir comment charger un p12 dans webcrypto. Vous avez besoin du processus inverse. – pedrofb

+0

Merci @pedrofb Mais il semble que le fichier p12 créé par pki.js ne puisse pas être importé dans Windows Store. – user1366645

0

Tout d'abord, javascript s'exécute sur le navigateur dans un sandbox. Donc, il a un accès très limité à l'ordinateur, il peut calculer/générer des choses mais ne peut pas faire de changements à l'ordinateur.

Créer une extension pour ajouter un certificat est un peu inutile, car pour ce faire, la seule façon de penser est d'exécuter un programme qui pourrait être exécuté par l'utilisateur en premier lieu. Plus d'informations sur l'exécution des programmes à partir de l'extension here.

Donnez donc à l'utilisateur un programme d'installation de certificat automatique (créez-en un) pour l'exécuter. Exemple de code c pour Opérations du magasin de certificatshere.

+0

Vous ne pouvez pas exécuter un programme d'installation à partir du navigateur. Lisez votre lien, la réponse acceptée propose d'utiliser un plugin NPAPI, qui n'est pas disponible en chrome depuis plus de deux ans. L'alternative, utiliser Chrome Messaging Api, ou une extension personnalisée 'myinstaller: \\' implique d'avoir préinstallé le logiciel – pedrofb

+0

Tout d'abord, ** je ne lui suggère pas d'utiliser une extension **, j'ai même dit que c'est " inutile". ** Je lui ai suggéré de fournir un exe ** téléchargeable pouvant installer le certificat (ne pas appeler un installateur), pour que l'utilisateur n'ait pas à le faire manuellement (il suffit de lancer un exe). Deuxièmement, ** le lien que j'ai fourni explique plus sur la possibilité d'exécuter un programme à partir d'une extension google-chrome **, si cela est possible ou non et avec quelle technologie est expliquée sur les réponses du lien, c'est pourquoi j'ai dit * more info ici *. Je pense que vous devriez lire, pas moi. – GramThanos

+0

Vous ne pouvez pas fournir un programme d'installation avec le certificat car le serveur n'a pas la clé privée. Vous auriez besoin que le programme d'installation soit déjà installé dans l'ordinateur de l'utilisateur afin que le navigateur puisse l'invoquer (avec les inconvénients commentés) pour fournir le certificat à installer. Je ne vois aucun avantage à cela. Il est plus simple pour l'utilisateur de double-cliquer sur un fichier .p12 et d'utiliser le programme d'installation Windows par défaut que sur un fichier .exe qui doit être invoqué par le navigateur. – pedrofb

0

Nous avons le même problème mais seulement en chrome.Nous avons réussi à le faire en Firefox (<keygen> objet en javascript) et IExpolorer (ActiveXObject). Considérant Java Applet je suggère la création MicroServer locale avec API REST et communiquer avec lui via le protocole SSL