プレーン JavaScript で PDF に署名する
課題:
WebCrypto API を使用して PDF ドキュメントにデジタル署名することには課題が生じます。現在の API ではキー ストレージやローカル暗号化への直接アクセスが許可されていないため、
解決策:
この制限を回避するには、次のことをお勧めします。
-
PDF のハッシュを作成します。 ドキュメント全体を送信する代わりに、PDF ファイルのハッシュを生成します。
-
ブラウザ拡張機能を使用する: Signer.Digital などのブラウザ拡張機能をインストールして、ローカル キーストア (例: Windows 証明書ストアや Linux 上の PKCS#11) にアクセスします。 ).
-
ハッシュに署名します: を使用します拡張機能の API は、ローカル キーストアから取得した秘密キーを使用してハッシュされた PDF に署名します。
-
署名の受信: ブラウザ拡張機能は、適切な形式 (例: PKCS7) で署名を返します。 .
-
PDF に署名を挿入: サーバー側で、適切なライブラリを使用します。 (または Signer.Digital によって提供されるもの) して、元の PDF ファイルに署名を挿入し直します。
Signer.Digital Extension:
署名者。デジタル ブラウザ拡張機能は、署名プロセスを実行するために必要な機能を提供します。
-
関数: SignerDigital.signPdfHash(hash, certThumbPrint, hasshingAlgo)
-
パラメータ:
- hash: PDF のハッシュBase64 でエンコードされた文字列
- certThumbPrint: 署名に使用する証明書の拇印
- hashingAlgo: PDF をハッシュするために使用されるアルゴリズム (例: "SHA256")
例:
// 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
}
);
ログイン後にコピー
注:
- 秘密キーは、ローカルの証明書設定に保存されます。
- 将来的には、WebCrypto API の進歩により、キー ストレージへの直接アクセスが可能になり、ブラウザ拡張機能が不要になる可能性があります。
以上が直接キーにアクセスせずに、JavaScript を使用して PDF にデジタル署名するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。