クライアントの秘密鍵を抽出して送信することは不可能であるか、とにかく安全であるため、サーバーで PDF に署名するには、クライアントとの「セッション」を確立して署名を計算させる必要があります。
手順は次のようになります。
クライアントは、署名済み PDF に埋め込む公開証明書を送信します。
サーバーはpdfを生成し、証明書を埋め込み、ハッシュを計算します(例:sha1)
サーバーはハッシュをクライアントアプレットに送信します
アプレットは彼女の秘密鍵でデジタル署名を計算します
アプレットは署名をサーバーに送信します
サーバーはデジタル署名を埋め込み、pdf を閉じます。
itext でこれを行うには、証明書を埋め込んだ後に preclose メソッドを使用する必要があります。これにより、最終的なドキュメントで sha1 ハッシュを計算できるようになります。次に、pdf を事前に閉じた後、pdf のハッシュを計算してクライアントに送信する必要があります。注意: 事前に閉じている間は、サーバー セッションなどでドキュメントをメモリに保持する必要があります。
PDF を生成し、証明書を埋め込み、ドキュメントを準備するには、itext ライブラリの c# ポートである itextsharp を使用できます。ハッシュを計算して pkcs7 エンベロープを作成するには、.net crypto API を使用できます。
お役に立てれば。