Tandatangan PDF dengan JavaScript Biasa
Cabaran:
Menandatangani dokumen PDF secara digital menggunakan API WebCrypto menimbulkan cabaran, kerana API semasa tidak membenarkan akses kepada storan kunci atau kripto tempatan secara langsung peranti.
Penyelesaian:
Untuk memintas pengehadan ini, anda disyorkan untuk:
-
Membuat Cincang PDF: Hasilkan cincangan fail PDF dan bukannya menghantar keseluruhan dokumen ke penyemak imbas.
-
Gunakan Sambungan Penyemak Imbas: Pasang sambungan penyemak imbas seperti Signer.Digital untuk mengakses stor kunci tempatan (cth., gedung Windows Certificate atau PKCS#11 di Linux ).
-
Tandatangan Hash: Gunakan API sambungan untuk tandatangani PDF yang dicincang menggunakan kunci peribadi yang diperoleh daripada stor kunci tempatan.
-
Terima Tandatangan: Sambungan penyemak imbas akan mengembalikan tandatangan dalam format yang sesuai (cth., PKCS7).
-
Suntikan Tandatangan ke dalam PDF: Di bahagian pelayan, gunakan perpustakaan yang sesuai (atau yang disediakan oleh Signer.Digital) untuk menyuntik semula tandatangan ke dalam fail PDF asal.
Signer.Digital Extension:
Pelanjutan penyemak imbas Signer.Digital menyediakan yang diperlukan fungsi untuk melaksanakan proses menandatangani sebagai berikut:
-
Fungsi: SignerDigital.signPdfHash(hash, certThumbPrint, hashingAlgo)
-
Parameter:
cincang: Cincang PDF dalam rentetan berkod Base64
- certThumbPrint: Cap ibu jari sijil untuk digunakan untuk menandatangani
- pencincanganAlgo: Algoritma yang digunakan untuk mencincang PDF (cth., "SHA256")
-
Contoh:
// Assuming hash is a Base64-encoded PDF hash
SignerDigital.signPdfHash(hash, $("#CertThumbPrint").val(), "SHA-256")
.then(
function (signDataResp) {
// Send signDataResp (contains Base64 PKCS7 signature) to server
},
function (errmsg) {
// Handle error
}
);
Salin selepas log masuk
Nota:
Kunci peribadi disimpan secara setempat dalam tetapan sijil penyemak imbas.
- Pada masa hadapan, dengan kemajuan API WebCrypto, akses terus kepada storan kunci mungkin menjadi mungkin, menghapuskan keperluan untuk sambungan penyemak imbas.
-
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menandatangani PDF Secara Digital Menggunakan JavaScript Tanpa Akses Kunci Terus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!