5

ASP.NET (C#) を使用してサーバー上で PDF を生成するプロジェクトがあります。しかし今は、顧客がこれらの PDF にデジタル署名できるようにする必要があります。私が見たところ、サーバーでは証明書の秘密鍵にアクセスできないため、アプレットを使用してクライアント側でドキュメントに署名する必要がありますが、上で述べたように、PDF はサーバー上で生成され、私はそれらをそこに保管してください。

したがって、私が必要としているのは、クライアントの証明書を取得して、サーバー上で PDF にデジタル署名することです。

ありがとう

4

4 に答える 4

3

クライアントの秘密鍵を抽出して送信することは不可能であるか、とにかく安全であるため、サーバーで PDF に署名するには、クライアントとの「セッション」を確立して署名を計算させる必要があります。


手順は次のようになります。

  1. クライアントは、署名済み PDF に埋め込む公開証明書を送信します。

  2. サーバーはpdfを生成し、証明書を埋め込み、ハッシュを計算します(例:sha1)

  3. サーバーはハッシュをクライアントアプレットに送信します

  4. アプレットは彼女の秘密鍵でデジタル署名を計算します

  5. アプレットは署名をサーバーに送信します

  6. サーバーはデジタル署名を埋め込み、pdf を閉じます。


itext でこれを行うには、証明書を埋め込んだ後に preclose メソッドを使用する必要があります。これにより、最終的なドキュメントで sha1 ハッシュを計算できるようになります。次に、pdf を事前に閉じた後、pdf のハッシュを計算してクライアントに送信する必要があります。注意: 事前に閉じている間は、サーバー セッションなどでドキュメントをメモリに保持する必要があります。

PDF を生成し、証明書を埋め込み、ドキュメントを準備するには、itext ライブラリの c# ポートである itextsharp を使用できます。ハッシュを計算して pkcs7 エンベロープを作成するには、.net crypto API を使用できます。

お役に立てれば。

于 2011-05-26T22:35:15.443 に答える
2

ドキュメントにデジタル署名するポイントを見逃している可能性があります。ドキュメントに署名する行為は、ユーザー アクティビティであることを意味します。

サーバー側でドキュメントを作成し、コンテンツタイプ「application/pdf」で提供すると、署名されるドキュメントが提供されます。彼らが署名したら、pdfフォーム送信を使用して、署名されたドキュメントをサーバーに送信できます。

于 2011-04-11T19:48:52.703 に答える
0

AspPdf + USB Network GateまたはAnywhereUSBは、クライアントがマシンで USB スマート カードを使用している場合に役立ちます。

于 2013-01-04T15:45:00.633 に答える