デジタル署名
デジタル署名
Aspose.Words FOSS for .NET は、すでに添付されているデジタル署名を検査および検証できます .docx ドキュメントを通じて Aspose.Words.DigitalSignatures 名前空間です。このエディションは署名をカバーします verification — 署名メタデータの読み取り、妥当性の確認、署名証明書の検査を行います。ドキュメントに新しい署名を作成する機能は含まれていません。
ドキュメントから署名を読み取る
すべての Document は、DigitalSignatures プロパティを公開し、DigitalSignatureCollection を返します — これは、ロードされたファイルに既に存在する DigitalSignature オブジェクトの読み取り専用かつ列挙可能なコレクションです。DigitalSignatureUtil.LoadSignatures(fileName)(および LoadSignatures(stream) オーバーロード)は、完全なドキュメントを Document オブジェクトにロードせずに、ファイルまたはストリームから直接署名を読み取ります。署名のステータスのみを確認したい場合に便利です。コレクションの IsValid プロパティは、含まれるすべての署名が有効かどうかを報告し、Count は見つかった署名の数を報告します。
個別の署名を検査する
各 DigitalSignature は、IsValid(署名が暗号的に有効かどうか)、SignatureType(DigitalSignatureType 値 — CryptoApi、XmlDsig、または Unknown)、SignTime、Comments、SubjectName、IssuerName、および生の SignatureValue バイトを公開します。CertificateHolder プロパティは、署名証明書をラップした CertificateHolder オブジェクトを返します。その Certificate プロパティは基礎となる X509Certificate2 を公開し、.NET の独自の証明書 API を使用して標準的な証明書フィールド(発行者、サブジェクト、有効期間)を検査できます。
このエディションでサポートされていない機能
API のサーフェスは依然として署名関連メンバーを宣言しています — DigitalSignatureUtil.Sign(), SignOptions、および XmlDsigLevel — 商用 Aspose.Words for .NET オブジェクトモデルとの構造的互換性のために宣言されていますが、この FOSS エディションではドキュメントに新しいデジタル署名を作成することは機能しません。このエディションを使用して verify ドキュメント内に既に存在する署名を処理します;署名ワークフローには Aspose.Words の .NET.
ヒントとベストプラクティス
- ファイルが署名されているかだけを確認したい場合は、全体の
Documentを開くよりもDigitalSignatureUtil.LoadSignatures()を使用してください。これにより、ドキュメント全体を解析するコストを回避できます。 - 個々の
DigitalSignature.IsValidの値を走査する前に、まずDigitalSignatureCollection.IsValidをチェックして迅速に合格/不合格を判定してください。 SignatureTypeは署名を生成した署名メカニズム(CryptoApiとXmlDsigのどちらか)を示します。これにより、どの証明書フィールドが意味を持つかが変わります。- 自動化されたドキュメント取り込みパイプラインでは、
IsValid == falseを致命的な失敗条件として扱ってください。無効な署名から取得した署名メタデータを信頼できるものとして表面化しないでください。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
DigitalSignatures.Count は署名された .docx 上で 0 です | ファイルは署名部分を削除したツールによって再保存されました | 再保存されたコピーではなく、元の署名付きファイルと比較して検証してください |
署名レポート IsValid = false | 署名後に文書の内容が変更されたか、証明書が信頼できない/期限切れです | 無効として扱い、署名を「repair」しようとしないでください |
| 文書に署名しようとしても効果がありません | このFOSSエディションでは署名機能は実装されていません | 署名ワークフローには Aspose.Words を .NET(商用)で使用してください |
CertificateHolder.Certificate は検査時に例外をスローします | 基になる証明書データが不正な形式であるか、署名部分が破損しています | ソースファイルが真正かつ改ざんされていない署名済みドキュメントであることを確認する |
FAQ
Aspose.Words FOSS for .NET がドキュメントに署名できますか?
いいえ。このエディションは既存のデジタル署名を検証できますが、新しい署名は作成できません。DigitalSignatureUtil.Sign() メソッドと SignOptions クラスは API の表面に構造的互換性のために存在しますが、ここでは署名機能は動作しません。
ドキュメントを完全に読み込まずに署名されているかどうかを確認するにはどうすればよいですか?
DigitalSignatureUtil.LoadSignatures(fileName) を呼び出すと、ファイルから直接 DigitalSignatureCollection が返されます。
DigitalSignatureCollection.IsValid はどういう意味ですか?
コレクション内のすべての署名が個別に有効な場合にのみ true です — 各 DigitalSignature を調べる前に、ドキュメント全体の署名整合性を迅速に確認する方法です。
署名の証明書情報はどこで取得できますか?
DigitalSignature.CertificateHolder.Certificate を使用すると、標準的な .NET X509Certificate2 が返されます。
API Reference 概要
| クラス / メソッド | 説明 |
|---|---|
Document.DigitalSignatures | ロードされたドキュメントにすでに添付されている署名 |
DigitalSignatureUtil.LoadSignatures() | ファイルまたはストリームから署名を読み取り、完全なドキュメントを読み込まずに処理する |
DigitalSignatureCollection | 読み取り専用コレクション DigitalSignature オブジェクト; IsValid、Count |
DigitalSignature | 単一の署名: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | 列挙型: CryptoApi, XmlDsig, Unknown |
CertificateHolder | 署名 X509Certificate2 をラップします |