使用 WebCrypto API 和純 JavaScript 對 PDF 文件進行數位簽章存在一定的挑戰。雖然 WebCrypto API 已經發展並獲得了 Chrome 和 Firefox 等瀏覽器的支持,但它缺乏對金鑰儲存或本機加密設備的直接存取。
為了安全 PDF 簽名,不建議將整個 PDF 檔案傳送到瀏覽器或 API 伺服器。建議的方法是建立 PDF 的雜湊值進行簽署並僅將雜湊值傳送到瀏覽器。
為了解決 WebCrypto API 在存取本機金鑰庫方面的限制, Signer.Digital 等瀏覽器擴充功能提供了一個解決方案。該擴充功能彌補了瀏覽器和用戶系統上運行的本機主機應用程式之間的差距。這允許存取本地密鑰儲存、加密 USB 或智慧卡。
使用 Signer.Digital 擴展,JavaScript 程式碼可以呼叫方法來簽署文件的雜湊值。然後,主機應用程式透過 Microsoft 憑證儲存(在 Windows 上)或 PKCS#11 程式庫(在 Linux 上)利用使用者的憑證來取得簽章。此擴充功能會傳回一個 Base64 編碼的 pkcs7 簽名,可以將其註入到 PDF 中。
瀏覽器中的JavaScript 代碼可以從Signer.Digital 瀏覽器調用以下方法擴展主機:
以上是如何使用 JavaScript 和 WebCrypto API 安全地對 PDF 進行數位簽章?的詳細內容。更多資訊請關注PHP中文網其他相關文章!