Maison >interface Web >js tutoriel >Comment puis-je signer numériquement des PDF à l'aide de JavaScript et de l'API WebCrypto en toute sécurité ?

Comment puis-je signer numériquement des PDF à l'aide de JavaScript et de l'API WebCrypto en toute sécurité ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-26 12:22:15387parcourir

How Can I Digitally Sign PDFs Using JavaScript and WebCrypto API Securely?

Signer des PDF avec Plain JavaScript et l'API WebCrypto

La signature numérique d'un document PDF à l'aide de l'API WebCrypto et de JavaScript pur présente certains défis. Bien que l'API WebCrypto ait évolué et soit désormais prise en charge dans des navigateurs tels que Chrome et Firefox, elle ne dispose pas d'un accès direct aux magasins de clés ou aux appareils de chiffrement locaux.

Pour une signature PDF sécurisée, il n'est pas conseillé d'envoyer l'intégralité du fichier PDF à le navigateur ou le serveur API. Créer un hachage du PDF pour signer et envoyer uniquement le hachage au navigateur est une approche recommandée.

Considérations sur la signature basée sur le navigateur

Pour répondre aux limitations de l'API WebCrypto lors de l'accès aux magasins de clés locaux, les extensions de navigateur comme Signer.Digital fournissent une solution. L'extension comble le fossé entre le navigateur et une application hôte locale exécutée sur le système de l'utilisateur. Cela permet d'accéder aux magasins de clés locaux, aux clés USB cryptographiques ou aux cartes à puce.

À l'aide de l'extension Signer.Digital, le code JavaScript peut appeler des méthodes pour signer le hachage d'un document. L'application hôte utilise ensuite le certificat de l'utilisateur via le magasin de certificats Microsoft (sous Windows) ou la bibliothèque PKCS#11 (sous Linux) pour obtenir la signature. L'extension renvoie une signature pkcs7 codée en Base64, qui peut être injectée dans le PDF.

Fonctions hôtes de l'extension du navigateur

Le code JavaScript du navigateur peut appeler les méthodes suivantes à partir du navigateur Signer.Digital Hôte d'extension :

  • signPdfHash(hash, certThumbPrint, hashAlgorithm)
  • signHashCAdESBr(hash, certThumbPrint, hashAlgorithm) (pour les signatures ICP-Brésil)
  • signCAdESEg(hash, certThumbPrint, hashAlgorithm) (pour l'Égypte ITIDA CAdES-BES signatures)

Ces méthodes permettent à JavaScript d'obtenir des signatures à partir de magasins de clés locaux et de dispositifs de chiffrement sans compromettre la sécurité des clés privées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn