PDF ファイルにタイムスタンプを付けてデジタル署名する

導入

PDF にデジタル署名し、セキュリティを強化するためにタイムスタンプを追加したいと思ったことはありませんか? 法的文書、契約書、または安全な認証を必要とする文書を作成する場合、タイムスタンプ付きのデジタル署名により信頼性がさらに高まります。このチュートリアルでは、Aspose.PDF for .NET を使用して PDF 文書にデジタル署名とタイムスタンプを追加する方法を詳しく説明します。心配しないでください。手順を追って説明します。

前提条件

コードに進む前に、この手順に従うために設定する必要があるものがいくつかあります。開始するための前提条件の簡単なチェックリストを以下に示します。

  • Aspose.PDF for .NET ライブラリ: プロジェクトに Aspose.PDF for .NET ライブラリをインストールする必要があります。最新バージョンはこちらからダウンロードしてくださいまたは、NuGet 経由でプロジェクトに追加します。
  • PDF ドキュメント: 作業にはサンプル PDF ファイルが必要です。署名するファイルがプロジェクトのディレクトリにあることを確認してください。
  • デジタル証明書(PFXファイル):デジタル証明書(.pfxファイル) を使用してドキュメントにデジタル署名します。
  • タイムスタンプ URL: これは、デジタル署名にタイムスタンプを添付するために使用されるオンライン タイムスタンプ サービスです。
  • 基本的な C# の知識: 専門家である必要はありませんが、C# の基本を知っておくと、コードを理解してカスタマイズするのに役立ちます。

これらすべてのボックスにチェックを入れたら、コーディングを開始する準備が整います。

パッケージのインポート

まず、次の名前空間を C# プロジェクトにインポートする必要があります。これにより、関連する Aspose.PDF クラスと関数にアクセスできるようになります。

using System.IO;
using System;
using Aspose.Pdf;
using Aspose.Pdf.Facades;
using Aspose.Pdf.Forms;
using System.Collections;

ステップ1: PDFドキュメントを読み込む

まず最初に、署名したい PDF ドキュメントを読み込む必要があります。手順は次のとおりです。

//ドキュメントディレクトリへのパスを定義する
string dataDir = "YOUR DOCUMENTS DIRECTORY";

// PDF文書を読み込む
Document document = new Document(dataDir + @"DigitallySign.pdf");

このステップは非常に簡単です。署名したい文書へのパスを定義するだけです。Document Aspose.PDF のクラスがファイルの読み込みを処理します。

ステップ2: デジタル署名を設定する

次に、PKCS7 クラスを使用してデジタル署名を作成し、PFX ファイルを読み込みます。この PFX ファイルには、ドキュメントに署名するために必要な証明書と秘密キーが含まれています。

// .pfx ファイルへのパス
string pfxFile = "YOUR DOCUMENTS DIRECTORY\\certificate.pfx";

//署名オブジェクトを初期化する
PdfFileSignature signature = new PdfFileSignature(document);

//パスワード付きのPFXファイルを読み込む
PKCS7 pkcs = new PKCS7(pfxFile, "pfx_password");

この時点で、Asposeに文書の署名にデジタル証明書を使用するように指示します。PKCS7オブジェクトはすべての暗号化作業を処理するので、細かい詳細について心配する必要はありません。

ステップ3: タイムスタンプ設定を追加する

強力なデジタル署名の重要な要素の 1 つはタイムスタンプです。これにより、証明書の有効期限が切れた後でもドキュメントの署名を検証できるようになります。オンライン タイムスタンプ認証局を使用してタイムスタンプを設定しましょう。

//タイムスタンプ設定を定義する
TimestampSettings timestampSettings = new TimestampSettings("https://your_timestamp_url", "ユーザー:パスワード");

// PKCS7オブジェクトにタイムスタンプ設定を追加する
pkcs.TimestampSettings = timestampSettings;

ここでは、署名に日付と時刻を自動的に提供するタイムスタンプ サービスの URL を指定します。これは、認証の有無にかかわらず実行できます。

ステップ4: 署名の場所と外観を定義する

ここで、PDF 内で署名が表示される場所とサイズを定義します。ページ上の署名ボックスの位置とサイズをカスタマイズできます。

//署名の外観と位置を定義します(ページ 1、指定された四角形)
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);

ここでは、署名を PDF の最初のページの座標 (100, 100) に配置し、幅を 200、高さを 100 にする四角形を定義しています。これらの値は、デザインに合わせて変更できます。

ステップ5: PDF文書に署名する

すべての設定が完了したら、実際に PDF にデジタル署名を適用します。この手順では、証明書、タイムスタンプ、および位置を 1 つの簡単なコマンドに組み合わせます。

//文書の最初のページに署名する
signature.Sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);

何が起こっているか見てみましょう:

  • 1: 署名を最初のページに適用する必要があることを示します。
  • 「署名理由」: ここで、文書に署名する理由を指定できます。
  • 「連絡先」:署名者の連絡先情報を入力します。
  • 「場所」: 署名者の場所を指定します。
  • true: このブール値は、署名がドキュメント内に表示されるかどうかを示します。
  • rect: 先ほど定義した四角形は、署名のサイズと位置を指定します。
  • pkcs: PKCS7 オブジェクトには、デジタル証明書とタイムスタンプの設定が含まれています。

ステップ6: 署名されたPDFを保存する

文書に署名したら、あとは保存するだけです。新しいファイル名を選択して、元のバージョンと署名済みバージョンの両方を保存できます。

//署名されたPDF文書を保存する
signature.Save(dataDir + "DigitallySignWithTimeStamp_out.pdf");

新しく署名され、タイムスタンプが付けられた PDF が指定されたディレクトリに保存されました。

結論

これで完了です。Aspose.PDF for .NET を使用して、タイムスタンプ付きの PDF にデジタル署名できました。このプロセスにより、ドキュメントの信頼性と整合性が保証され、作成者と受信者の両方に安心感を与えます。デジタル署名は、今日のデジタル世界でますます重要になってきています。そのため、このプロセスを習得することは、間違いなく価値のあるスキルです。

よくある質問

証明書に別のファイル形式を使用できますか?

はい、ただし、このチュートリアルでは、デジタル証明書の最も一般的な形式である PFX ファイルの使用に重点を置いています。

タイムスタンプを適用するにはインターネット接続が必要ですか?

はい、タイムスタンプはオンラインのタイムスタンプ機関から取得されるため、インターネット アクセスが必要になります。

PDF 内の複数のページに署名できますか?

もちろんです!signature.Sign()複数のページを対象にしたり、すべてのページをループしたりするメソッド。

PFX ファイルのパスワードが間違っているとどうなりますか?

パスワードが間違っていると例外が発生しますので、正しく入力されていることを確認してください。

署名を非表示にすることはできますか?

はい、合格できますfalseSignメソッドの可視性パラメータを使用して署名を非表示にします。